######################################################################################################################################
#
# Funktionen ( Auszug):
# Lautstärke des Tonrufs am Telefon hochdrehen. (Default=0, Normal eher 3)
# Sofortige Rufumleitungsziel: Nst. 100
# Sofortige Rufumleitung: an/aus = $true/$false
# Umleitung bei besetzt: an/aus
# Umleitung bei besetzt zur Nst. xxx
# Umleitung nach Zeit: an/aus
# Umleitungsziel nach Zeit: Nst. xxx
# Zeit in Sekunden: (25)
# Verbinden durch auflegen: ein
# Desktop Sharing möglich: ein
# Anrufinformation bei normalen Anrufen im Tray: ein
# Anrufinformation im Tray für andere: ein
# Immer aktiv auf dem Desktop: aus
# Pop up beim klingeln: ein 
# Minimieren nach Gespräch: ein 
# Minimieren im TrayIcon: aus
# Hotkey alt-x für Client in den Vordergrund bringen
# Zweitanruf unterbinden
# und noch einiges mehr........ ;-)
#
# Erstellt von Mathias Storck am 16.11.2017.
#
# Historie:
# V3.6:   - Bei der Installation FTP-Server und Web-Server wird jetzt erst geprüft ob die Dienste bereits installiert sind. 2 Tippfehler beseitigt.
#         - Bei allen Ja / Nein Fragen wird geprüft ob beide Hacken gesetzt sind, falls ja kommt eine Fehlermeldung. Wo es möglich war wurden Checkboxen gegen Radiobuttons ausgetauscht.
# V3.5:   - Frage jetzt im Scripts selbst nach Admin Rechten falls das Script noch keine hat.
#         - Name des Tools von NewGUITool nach OpenAdminX umbenannt. 
# V3.4:   - Script Code für bessere Wartbarkeit überarbeitet, kleinere Fehler beseitigt (Anzeige der RegKeys), Funktion "Kopieren von Funktionstasten" deaktiviert 
#         -	wegen Problemen mit den Leitungstasten. FTP Firmware Download jetzt aus dem Ordner "fw11" anstelle von "fw10". (nur *.img, *.bmp und *.png Dateien)
# V3.3:   - Backup Menü überarbeitet. Jetzt kann das Backupziel ausgewählt werden und beim Restore ebenfalls. (C:\Backup\Backups\, D:\Backup\OpenAdmin (bei MAX Version) bzw. Standardpfad.
# V3.2:   - Bei einer MAX/SwyxExpress Version wird das Datenbank Backup automatisch auch auf die SD-Karte in das Verzeichnis D:\Backup\OpenAdmin kopiert, 
#		  -	Backup und Restore jetzt auch von Laufwerk D:\Backup\OpenAdmin möglich.
#         - Wenn beim Start kein Backup erzeugt werden kann kommt jetzt die Frage ob trotzdem weitergemacht werden soll anstelle von automatisch das Script zu beenden.
#         - Der Name der erzeugten Datenbank Backups ist jetzt im deutschen Format anstelle des englischen. Bsp.: IpPbxBackup-11-05-2017-22-52-17.dat
#         - Funktion "Aktuelle Benutzerlizenzen und Lizenzstatus anzeigen" hinzugefügt (9-8).
# V3.1:   - Kopieren von Funktionstasten eines Musterusers auf alle Mitglieder der Konfig-Gruppe hinzugefügt (8-9), Swyxware Version auslesen hinzugefügt (9-7)
# V3.0:   - Lizenz Key auslesen funktioniert jetzt auch mit 2008 Server, beenden muss jetzt nicht mehr mit "j" bestätigt werden. Start weiter beschleunigt.
# V2.9:   - Neue .bat Datei hinzugefügt zum Starten per rechter Maustaste als Administrator. Beim ändern der Mediabridge kommt eine Abfrage ob die Dienste neu gestartet werden sollen.
# V2.8:   - Aktive Userliste mit Informationen(ClientVersion, IP, MAC, Betriebssystem) überarbeitet, jetzt mit zusätzlicher Tabelle UserID Username Rufnummer.
#		  - Pin der User kann jetzt 6-stellig gesetzt werden. Dazu wird die Rufnummer mit 0 auf 6 Stellen erweitert. Bsp.: Nst = 15, Pin = 150000 oder Nst. = 123, Pin = 123000 	
# V2.7:   - Script prüft ob es eine Netphone oder Swyxware ist und passt die Pfade an. Copy Callrouting Funktion überarbeitet (Abfrage Rufnummer statt Name mit Prüfung).
# V2.6:   - Wenn keine Verbindung zur Netphone hergestellt werden kann kommt ein Hinweis zum Anlegen eines Users mit Admin Rechten, danach ein Fenster zum Eingeben der Login Daten. 
# V2.5:   - Unterschiedliche Behandlung Windows Server 2008 bzw. 2012 (Firewall, Windows Features)
# V2.4:   - Prüfung der PowerShell Version eingebaut, falls kleiner als Version 4 mit Warnung beenden. Windows Server hat im Default nur Version 2.0 an Board.
# V2.3:   - Fehlerabsicherungen beim Start erweitert wegen diverser Probleme im Wirkbetrieb. Prüfungen an den Anfang des Scripts verschoben. Bei Fehler stoppt das Script.
# V2.2:   - Zugeordneter User ist jetzt nicht mehr die Zentrale, sondern der User Konferenz, Musteruser für Namenstasten kann eingegeben werden und ist nicht mehr fest die Nr. 99
# V2.1:   - Fall in der Netphone bei keinem User der Administrator als Windows Account zugeordnet ist wird automatisch der Administrator dem internen User Zentrale zugeordnet
#		  - und die Verbindung zur Netphone erneut hergestellt. Beim Beenden wird dies wieder rückgängig gemacht. (Windows Account dem User Zentrale wieder entfernt) 
# V2.0.3: - Automatische Größenanpassung des Fensters beim Start. Jetzt als EXE Version.
# V2.0.2: - Funktion (13) Kopieren und löschen von Leitungstasten für User der Konfig-Gruppe hinzugefügt. Schreiben und löschen von Client Zertifikaten wegen hoher CPU Last überarbeitet.
# V2.0.1: - Fehler beim Kopieren von Namenstasten beseitigt. (7-1, 7-2 und 7-3) Es wurden nur die ersten 11 Tasten kopiert, sofortige Anwahl war aus.
# V2.0:   - Sicherheitsabfrage bei Rufumleitungen für alle User hinzugefügt. Menüpunkt 8-6 (Bei der nächsten Anmeldung Passwort ändern verschoben nach Clienteinstellungen 6-11)
#         - Windows Lizenz Key auslesen (14) nach Systeminformationen verschoben (9 - 6). Beim Start des Scripts wird automatisch ein Datenbank Backup erstellt.
#         - Menüpunkt Windows Features installieren (12) erstellt und FTP Server, Firmware und Telnet Client Installationen dorthin verschoben.
# V1.7.7: - Script startet jetzt auch ohne Admin Rechte, aber mit Warnung!
# V1.7.6: - Funktion Check RemoteConnector Ports hinzugefügt (Menüpunkt 9 - 5), Telnet Client installieren hinzugefügt. (Menüpunkt 15). 
# V1.7.5: - Funktion Windows Lizenz Key auslesen hinzugefügt.
# V1.7.4: - Name für Desktopverknüpfung war falsch, Im Menü 3 (Rufumleitung für alle) war der Punkt 3 zweimal vorhanden (1,2,3,3 anstatt 1,2,3,4), FTP Server Installation geändert.
# V1.7.3: - Fehlerbeseitigung bei der Funktion Namenstasten beseitigt. (q und 1 ohne Funktion bei Punkt 2 und 3)
# V1.7.2: - Auto Firmware Update IP-Phone verschoben in das IP-Telefon Menü 2-9 nach 8-9). In mehreren Menüs Falscheingaben abgefangen. (Ein/Aus Funktionen) 
# V1.7.1: - Aus Menü 11 mit 0 zurück funktioniert jetzt. Im Menü 2: Punkt 9 und 10 getauscht. Wieder Rechtschreibfehler gefunden. ;-)
# V1.7:   - Menüs für bessere Lesbarkeit überarbeitet.
# V1.6.9: - Fax Client Einstellungen hinzugefügt.
# V1.6.8: - Internet Testfunktion für FTP Download hinzugefügt.
# V1.6.7: - Fehlerbeseitigungen FTP-Server Installation.
# V1.6.6: - Funktion FTP-Server installieren und Firmwaredownload + Install Phonewhitelist hinzugefügt.
# V1.6.5: - Funktion Namenstasten der User Konfig-Gruppe mit gekürztem Vornamen hinzugefügt. + alle Tasten löschen anstelle 20.
#           Sortieren der Namenstasten nach Name bzw. Rufnummer hinzugefügt, Klingellautstärke jetzt individuell einstellbar 0 - 7.
# V1.6.4: - Neue Funktion "Info über Systemstatus" hinzugefügt. (Menü 9 - 4)
# V1.6.3: - Funktion Client Zertifikat für Remote Connector erstellen und löschen hinzugefügt. (Menü 10 - 1-2)
# V1.6.2: - MAC Adresse der Telefone löschen hinzugefügt, PIN der Telefone = eigene Nummer hinzugefügt. (Menü 8 - 4+8)
# V1.6.1: - Mehr Infos in den Funktionen, NTP Server kann selbst eingeben werden.
# V1.6.0: - Alle RegKeys können auch deaktiviert werden, Konfig-Gruppe wird angelegt falls nicht schon vorhanden. 
#           Zeit für Wiederanruf einstellbar, Automatisches Anmelden IP-Telefon hinzugefügt, Kosmetik am Script (echo gegen Write-Host ausgewechselt)
# V1.5.9: - Aktuelle Pin der IP Telefone auslesen hinzugefügt.
# V1.5.8: - Neue Funktion Namenstasten für alle User (1Dummy) hinzugefügt.
# V1.5.7: - Funktion Systeminformationen hinzugefügt. (Userliste, CTI Status) 
# V1.5.6: - Funktion Datenbank wiederherstellen hinzugefügt.
# V1.5.5: - PIN der Telefone auf 2 x eigene Nummer setzen und Passwort ändern hinzugefügt.
# V1.5.4: - Menüs umgeschrieben (zusammengefasst), Namenstasten löschen, 
#           Headset Taste ein/aus und CTI Client Gerät auswählen hinzugefügt.
# V1.5.3: - Warnung, wenn Admin keinem Client zugewiesen ist.
# V1.5.2: - SQL Abfrage RemoteConnector hinzugefügt.
# V1.5.1: - Erste lauffähige Version mit den gewünschten Funktionen.

#
#################################################################################
$Version = "V3.6"

# Hole mir selbst Admin Rechte falls ich noch keine habe
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Warning " Noch keine Admin Rechte, frage mal nach..."
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

# Ein Paar benötigte Variablen
$KONFERENZUSER = 0
$MinWidth = 120
$MinHeight = 50

try
	{
		$bufferSize = $host.UI.RawUI.BufferSize

		if ($bufferSize.Width -lt $MinWidth  ) { $bufferSize.Width = $MinWidth  }
		if ($bufferSize.Height -lt $MinHeight ) { $bufferSize.Height = $MinHeight }

		$host.UI.RawUI.BufferSize = $bufferSize

		$windowSize = $host.UI.RawUI.WindowSize

		if ($windowSize.Width -lt $MinWidth  ) { $WindowSize.Width = $MinWidth  }
		if ($windowSize.Height -lt $MinHeight ) { $WindowSize.Height = $MinHeight }

		$host.UI.RawUI.WindowSize = $windowSize
	}
catch { }
# Hintergund ändern
#$a = (Get-Host).UI.RawUI
        #$a.ForegroundColor = "black"
        #$a.BackgroundColor = "gray"
#		$a.BackgroundColor = "DarkBlue"
#		cls

# Windows Version auslesen
$OSVERSION = (Get-CimInstance Win32_OperatingSystem).Version
if ($OSVERSION -like "6.1*") {$OSNAME = "Windows Server 2008"}
if ($OSVERSION -like "6.3*") {$OSNAME = "Windows Server 2012"}

# Prüfung ob Netphone oder Swyxit installiert ist
$SwyxPath = 'C:\Program Files (x86)\SwyxWare'
$TComPath = 'C:\Program Files (x86)\Netphone'
if((Test-Path -Path $SwyxPath ))
	{
	   	Write-Host
		Write-Host " Server ist eine Swyxit auf $OSNAME."
		$SERVERVERSION = "SwyxWare"
		$TargetFile = "C:\ProgramData\Swyx\Backup"
		$ShortcutFile = "$home\Desktop\Swyxware Datenbank Backups.lnk"
		$BACKUPPATH = "Swyx"
		Write-Host
	}
if((Test-Path -Path $TComPath ))
	{
		Write-Host
		Write-Host " Server ist eine Netphone auf $OSNAME."
		$SERVERVERSION = "Netphone"
		$TargetFile = "C:\ProgramData\T-Com\Backup"
		$ShortcutFile = "$home\Desktop\Netphone Datenbank Backups.lnk"
		$BACKUPPATH = "T-Com"
		Write-Host
	}


# Powershell Version prüfen, falls zu alt stop
if ( $PSVersionTable.PSVersion.Major -lt 4) 
	{ 
		 Write-Host
		 Write-Host -ForegroundColor RED " Die installierte Powershell Version ist zu klein (Version: $($PSVersionTable.PSVersion.Major))."
		 Write-Host
		 Write-Host -ForegroundColor RED " Die Mindestanforderung ist Version 4!"
		 Write-Host
		 Write-Host " Das Programm wird beendet."
		 Write-Host
		 pause
		 break
	}
####################################################################################
# Prüfen ob der User Adminrechte hat.
 $objIdentitaet = [System.Security.Principal.WindowsIdentity]::GetCurrent()
 $objPrincipal = New-Object System.Security.Principal.WindowsPrincipal($objIdentitaet)
 
  if(-not $objPrincipal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) 
	{
		Write-Host
		Write-Host -ForegroundColor red " Das Script wird wahrscheinlich nicht mit den notwendigen Rechten ausgeführt!" 
		Write-Host -ForegroundColor red " Einige Funktionen sind wahrscheinlich nicht verfügbar." 
		Write-Host
		Write-Host -ForegroundColor Yellow " Besser ist es die Powershell mit Rechtsklick, 'als Administrator ausführen' zu starten."
		Write-Host
		Write-Host -ForegroundColor Yellow " Mal sehen wie weit wir kommen! Mit ENTER geht es trotz dieses Fehlers weiter....."
		Write-Host
		pause
	}

# Netphone Module in Powershell laden
# Prüfen ob die Module (IpPbx) geladen werden können. Sonst Abbruch.
write-host
write-host -NoNewline -ForegroundColor green  " $SERVERVERSION Module werden geladen....."

try
	{
	   if (!(get-module ippbx))
		{
			Import-Module IpPbx -ErrorAction Stop
		}
	}

catch
	{	
		if (Get-Module -ListAvailable -Name Ippbx) 
			{
				Write-Host
				Write-Host -ForegroundColor Magenta  "Module Ippbx ist im Pfad eingetragen."
				Write-Host
				Write-Host -ForegroundColor Magenta  " Aber irgendetwas ist hier verkehrt, ohne Module kein Script!"
				Write-Host
				Write-Host " Programm wird beendet."
				pause
				break
			}	 
		else 
			{
				Write-Host
				Write-Host -ForegroundColor Magenta " Der Pfad zu den IpPbx Modulen ist nicht eingetragen!"
				Write-Host
				Write-Host -ForegroundColor Magenta " Modul IpPbx konnten nicht geladen werden! Ist die $SERVERVERSION Administrationssoftware mit Powershell Unterstützung installiert?" 
				Write-Host
				Write-Host " Script wird beendet!"
				Write-Host
				pause
				break
			}
	}

write-host -ForegroundColor green {OK.}

# Verbindung zur Datenbank herstellen
# Püfen ob eine verbindung zur datenbank hergestellt werden kann, sonst Abbruch.
write-host -NoNewline -ForegroundColor green { Verbindung zur Datenbank wird hergestellt....}

try
	{
	  Connect-IpPbx -ErrorAction Stop -WarningVariable x
	}

catch [Exception]
	{ 
		Write-Host	
		Write-Host
		Write-Host -ForegroundColor red " Konnte keine Verbindung zur $($SERVERVERSION) herstellen!" 
		Write-Host
		Write-Host -ForegroundColor Yellow " Ohne Verbindung zur $($SERVERVERSION) kann das Script nicht ausgeführt werden!"
		Write-Host
		Write-Host -ForegroundColor yellow -nonewline " Die Fehlermeldung lautete:"
		Write-Host -ForeGroundColor red " $_"
		Write-Host
		Write-Host -ForeGroundColor yellow -NoNewline " Die Anmeldung wurde mit folgendem Username  durchgeführt:"
		Write-Host -ForeGroundColor red " $($ENV:USERNAME) "
		Write-Host
		Write-Host -ForegroundColor Yellow " Ist dieser User in der $($SERVERVERSION) als Administrator eingetragen? Wahrscheinlich nicht."
		Write-Host
		Write-Host
		Write-Host -ForegroundColor yellow " Letzte Möglichkeit: Bitte in der $($SERVERVERSION) einen User anlegen,"
		Write-Host -ForegroundColor yellow " Authentifizierung über Username + Kennwort aktivieren,"
		Write-Host -ForegroundColor yellow " ein Passwort vergeben und den User unter " 
		Write-Host -ForegroundColor yellow " Administration, Administrationsprofil das Profil 'System-Administrator' setzen."
		Write-Host -ForegroundColor yellow " Danach wieder hierher wechseln, ENTER drücken, die Daten hier im Loginfenster eingeben und OK drücken." 
		Write-Host
		pause 
		try
			{
				Connect-IpPbx -UseIpPbxLogin -ErrorAction Stop
			} 

		catch 
			{
			  Write-Host	
			  Write-Host
			  Write-Host -ForegroundColor red " Konnte keine Verbindung zur $($SERVERVERSION) herstellen!" 
			  Write-Host
			  Write-Host -ForegroundColor Yellow " Ohne Verbindung zur $($SERVERVERSION) kann das Script nicht ausgeführt werden!"
			  Write-Host
			  Write-Host -ForegroundColor yellow -nonewline " Die Fehlermeldung lautete:"
			  Write-Host -ForeGroundColor red " $_"
			  Write-Host
			  Write-Host -ForeGroundColor yellow -NoNewline " Die Anmeldung wurde mit folgendem Username  durchgeführt:"
			  Write-Host -ForeGroundColor red " $($ENV:USERNAME) "
			  Write-Host	
			  Write-Host	
			  pause
			  break		
			}
	}

# Warnungen abfangen
if ($x -ne "") 
	{
		Write-Host
		Write-Host
		Write-Host -ForeGroundColor yellow " Der aktuelle User '$env:Username' ist nicht mit einem $($SERVERVERSION) Client verbunden."
		Write-Host -ForeGroundColor yellow " Dadurch sind nicht alle Funktionen möglich bzw. werden mit einer Fehlermeldung nicht ausgeführt."
		Write-Host
		Write-Host -ForeGroundColor yellow -nonewline " Versuche den aktuellen Benutzer '$env:Username' jetzt automatisch dem internen User 'Konferenz' zuzuordnen...."
		# Aktueller User in der Netphone dem User Konferenz zuweisen
		Add-IpPbxUserWindowsAccount -username "Konferenz" -NTAccount "$env:computername\$env:Username"
		#Setzte eine Variable um beim beenden des Programms den Konferenzuser wieder zu bearbeiten
		$KONFERENZUSER = 1
		Write-Host -ForeGroundColor yellow ".OK"
		Write-Host
		Write-Host -foregroundcolor yellow -nonewline " Verbinde mich jetzt nochmal neu mit der $($SERVERVERSION)..."
		disconnect-ippbx
		Connect-IpPbx -WarningVariable y
				

		# 2. Warnung abfangen
		if ($y -ne "") 
		{
			Write-Host
			Write-Host
			Write-Host -ForeGroundColor red " Der aktuelle User '$env:Username' konnte nicht mit einem $($SERVERVERSION) Client verbunden werden!"
			Write-Host
			Write-Host -ForeGroundColor yellow " Dadurch sind nicht alle Funktionen möglich bzw. werden mit einer Fehlermeldung nicht ausgeführt."
			Write-Host
			Write-Host -ForeGroundColor yellow " Besser ist es wenn wir an der Stelle aufhören!"
			Write-Host
			pause
			break
		}
				
		# Soweit OK, kann weitergehen				
		else 	
		{
			Write-Host -foregroundcolor yellow ".OK" 
			Write-Host
			Write-Host -foregroundcolor green " In 2 Sekunden geht es weiter......."
			Write-Host
			sleep 2
		}
	}

# Bis hierhin fehlerfreier Start
if (!$x  -and !$y) {write-host -ForegroundColor green "OK."}

# Backup der Datenbank erstellen bevor es losgeht
Write-Host
Write-Host -ForegroundColor yellow " Erstelle ein Backup der aktuellen Datenbank"
Write-Host

$DATUM = (Get-Date -Format dd.MM.yyyy-HH-mm-ss)
$Command = "C:\Program Files (x86)\$SERVERVERSION\IpPbxConfig.exe"
$Parms = "/backup -file C:\Programdata\$BACKUPPATH\Backup\IpPbxBackup-$Datum.dat && exit 0 || exit 1"
$Prms = $Parms.Split(" ")
& "$Command" $Prms 

if ($LASTEXITCODE -ne 0)
			{	
				Write-Host
				Write-Host -ForegroundColor red " Datenbank Backup konnte nicht erstellt werden. Wahrscheinlich keine oder nicht ausreichende Rechte!"
				Write-Host
				Write-Host -ForegroundColor Yellow " Soll trotz dieses Fehlers mit dem Script fortgefahren werden?"
				Write-Host
				Write-Host "    weitermachen: j:"
				Write-Host "        aufhören: n:"
				Write-Host
				Write-Host
				Write-Host -ForegroundColor Green " Bitte j oder n eingeben:> " -NoNewline
				Write-Host
				$answer = Read-Host
				if ($answer -ne "j") { break }
				else {Write-Host "OK. wir machen weiter"}
	
			}	

Write-Host
Write-Host -ForegroundColor yellow " Datenbankbackup erstellt."
Write-Host

# Falls es eine MAX Version ist Datenbankbackup auf SD ins Verzeichnis D:\Backup\OpenAdmin kopieren
$MAXVERSION = "0"
		$ErrorActionPreference = 'SilentlyContinue'
		$SSDZIEL = "D:\Backup\OpenAdmin" 
		Write-Host -Foregroundcolor yellow -nonewline " Prüfe ob wir eine SD als 2. Laufwerk haben..."
		# Teste ob LW D eine SD ist
		# DriveType2 = Removable Disk, DriveType3 = Local Disk, DriveType4 = Network Drive, DriveType5 = Compact Disk
		if (Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DriveType -eq 2} | Where-Object {$_.DeviceID -eq "D:"})
			{
				Write-Host -Foregroundcolor yellow " JA."
				Write-Host
			
				if (-Not(Test-Path “$SSDZIEL”)) 
					{
						Write-Host -Foregroundcolor yellow " Erstelle den Ordner $($SSDZIEL) auf der SSD."
						New-Item -ItemType Directory -Force -Path $SSDZIEL
						Write-Host
					}
	
					# Name der letzte Backup Datei ermitteln 
					$FILE = Get-ChildItem $TargetFile | sort LastWriteTime -desc | select -First (1)
					#$FILE = get-childitem $TargetFile | Where-Object { $_.LastWriteTime -gt (get-date).Addminutes(-1)}

					# Datenbank kopieren
					Copy-Item $TargetFile\\$File -Destination $SSDZIEL
					Write-Host
					if ( Test-Path $TargetFile\\$File )
						{
							Write-Host -Foregroundcolor green " Datenbank Backup '$TargetFile\$File' nach $SSDZIEL kopiert."
							$MAXVERSION = "1"
						}
					else
						{ 
							Write-Host -ForeGroundColor RED "Fehler beim kopieren von Datenbank Backup von '$TargetFile\$File' nach $($SSDZIEL)!"
							sleep 3
						}
			}

		else
		{
		Write-Host -Foregroundcolor yellow " NEIN."
		}

# Verknüpfung zum Backup Ordner auf Desktop erzeugen
Write-Host
Write-Host -ForegroundColor green " Erstelle auf dem Desktop eine Verknüpfung zum Ordner $TargetFile falls nicht vorhanden...."   
Write-Host 
if (-Not(Test-Path “$ShortcutFile”)) 
	{
		$WScriptShell = New-Object -ComObject WScript.Shell
		$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
		$Shortcut.TargetPath = $TargetFile
		$Shortcut.Save()
	}	 

# Konfig-Gruppe anlegen falls nicht vorhanden
Write-Host -ForegroundColor green " Erzeuge in der $($SERVERVERSION) die Konfig-Gruppe falls nicht vorhanden...."   
Write-Host 
$group = Get-IpPbxGroup -GroupName "Konfig-Gruppe" 
if ($group.Name -ne "Konfig-Gruppe") 
	{
		New-IpPbxGroup -Comment "Angelegt von OpenAdmin" -GroupName "Konfig-Gruppe" | Add-IpPbxGroup
	}


# Powershell Fernster minimieren Start
$Script:showWindowAsync = Add-Type -MemberDefinition @"
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@ -Name "Win32ShowWindowAsync" -Namespace Win32Functions -PassThru
Function Show-Powershell()
	{
		$null = $showWindowAsync::ShowWindowAsync((Get-Process -Id $pid).MainWindowHandle, 10)
	}
Function Hide-Powershell()
	{
		$null = $showWindowAsync::ShowWindowAsync((Get-Process -Id $pid).MainWindowHandle, 2)
	}
Hide-Powershell
# Powershell Fernster minimieren Ende

Write-Host -ForegroundColor Yellow " Starte GUI...."   
Write-Host 

# Vorstart Ende
##########################################################################################################################################

# GUI Grundgerüst laden
#
# Die ersten beiden Befehle holen sich die .NET-Erweiterungen (sog. Assemblys) für die grafische Gestaltung in den RAM.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
# Die nächste Zeile erstellt aus der Formsbibliothek das Fensterobjekt.
$form = New-Object System.Windows.Forms.Form
# Die Zeile mit der Eigenschaft Startposition legt fest, wo auf dem Bildschirm unser Fenster auftauchen soll.
$form.StartPosition = "CenterScreen"
# Icon oben links
$Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
$form.Icon = $Icon
# Kein Maximieren Button
$form.MaximizeBox = $False
$form.WindowState = "Normal"
$form.SizeGripStyle = "Hide"
# Fenstergröße 900 Bildpunkt breit und 700 Bildpunkte hoch.
$form.Size = New-Object System.Drawing.Size(915,700)
# Die Titelleiste beschriften können Sie mit:
$form.Text = "Open AdminX    $Version"
# Sollen die beiden Knöpfe nun auch bei Enter (= OK) oder Escape (= Cancel) ausgelöst werden bietet sich folgendes an:
$form.KeyPreview = $True

# Tabs registrieren
$tabControl = New-Object System.Windows.Forms.TabControl
$tabPage1 = New-Object System.Windows.Forms.TabPage
$tabPage2 = New-Object System.Windows.Forms.TabPage
$tabPage3 = New-Object System.Windows.Forms.TabPage
$tabPage4 = New-Object System.Windows.Forms.TabPage
$tabPage5 = New-Object System.Windows.Forms.TabPage
$tabPage6 = New-Object System.Windows.Forms.TabPage
$tabPage7 = New-Object System.Windows.Forms.TabPage
$tabPage8 = New-Object System.Windows.Forms.TabPage
$tabPage9 = New-Object System.Windows.Forms.TabPage
#$tabPage10 = New-Object System.Windows.Forms.TabPage
#$tabPage11 = New-Object System.Windows.Forms.TabPage

# 1. Tab Control anlegen
$tabControl.TabIndex = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 899
$System_Drawing_Size.Height = 463
$tabControl.Size = $System_Drawing_Size
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 1
$System_Drawing_Point.Y = 1
$tabControl.Location = $System_Drawing_Point
$tabControl.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Name = "tabControl1"
$tabControl.SelectedIndex = 0
$form.Controls.Add($tabControl)

# Beginn TAB 1 ##############################################################

# Client Einstellungen Seite anlegen und an 1 TAB binden
$tabPage1.TabIndex = 0
$tabPage1.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage1.Size = $System_Drawing_Size
$tabPage1.Text = "Client Einstellungen"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage1.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage1.Padding = $System_Windows_Forms_Padding
$tabPage1.Name = "tabPage1"
$tabPage1.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage1)

# Label Combobox Gruppe auswählen TAB 1  
$Label = New-Object System.Windows.Forms.Label
$Label.Location = New-Object System.Drawing.Size(10,10) 
$Label.Size = New-Object System.Drawing.Size(280,20) 
$Label.Text = "Bitte eine Gruppe auswählen" 
$tabPage1.Controls.Add($Label) 

# Combobox  Gruppe auswählen TAB 1 Gruppen  
$Combobox = New-Object System.Windows.Forms.Combobox 
$Combobox.Location = New-Object System.Drawing.Size(10,32) 
$Combobox.Size = New-Object System.Drawing.Size(260,20) 
#[void] $Combobox.Items.Add(" ")
[void] $Combobox.Items.Add("Konfig-Gruppe")
[void] $Combobox.Items.Add("Vertrieb")
[void] $Combobox.Items.Add("Verkauf")
[void] $Combobox.Items.Add("Jeder")
$Combobox.SelectedIndex = 0
$Combobox.Height = 70
$comboBox.add_DropDownClosed({$statusBar.Text = "Auswahl: "+$comboBox.SelectedItem +" " +$TextBox.Text})
$Combobox.add_DropDownClosed({$comboboxtab2.SelectedItem = $combobox.SelectedItem})
$Combobox.add_DropDownClosed({$comboboxtab3.SelectedItem = $combobox.SelectedItem})
$Combobox.add_DropDownClosed({$comboboxtab6.SelectedItem = $combobox.SelectedItem})
$Combobox.add_DropDownClosed({$comboboxtab9.SelectedItem = $combobox.SelectedItem})
$comboBox.TabIndex = 0
$tabPage1.Controls.Add($comboBox) 
#$form.Topmost = $True

# Client GroupBox1 TAB 1
$ClientGroupBox = New-Object System.Windows.Forms.GroupBox
$ClientGroupBox.Location = New-Object System.Drawing.Size(330,15) 
$ClientGroupBox.size = New-Object System.Drawing.Size(540,390) 
$ClientGroupBox.text = "Client Optionen" 
$tabPage1.Controls.Add($ClientGroupBox)

# Listen GroupBox1 TAB 1
$ListenGroupBox = New-Object System.Windows.Forms.GroupBox
$ListenGroupBox.Location = New-Object System.Drawing.Size(10,75) 
$ListenGroupBox.size = New-Object System.Drawing.Size(310,75) 
$ListenGroupBox.text = "Max. Einträge in Listen" 
$tabPage1.Controls.Add($ListenGroupBox)

# Klingeln von CTI Geäteen GroupBox1 TAB 1
$CtiGroupBox = New-Object System.Windows.Forms.GroupBox
$CtiGroupBox.Location = New-Object System.Drawing.Size(10,160) 
$CtiGroupBox.size = New-Object System.Drawing.Size(312,90) 
$CtiGroupBox.text = "Klingeln von CTI Geräten" 
$tabPage1.Controls.Add($CtiGroupBox)

# Hoteky Alt-X GroupBox TAB 1
$HotkeyGroupBox = New-Object System.Windows.Forms.GroupBox
$HotkeyGroupBox.Location = New-Object System.Drawing.Size(10,260) 
$HotkeyGroupBox.size = New-Object System.Drawing.Size(312,60) 
$HotkeyGroupBox.text = "Hotkey ALT - X" 
$tabPage1.Controls.Add($HotkeyGroupBox)

# VoiceMail Begrüßungsansage GroupBox TAB 1
$VMGroupBox = New-Object System.Windows.Forms.GroupBox
$VMGroupBox.Location = New-Object System.Drawing.Size(10,330) 
$VMGroupBox.size = New-Object System.Drawing.Size(312,75) 
$VMGroupBox.text = "VoiceMail Begrüßungsansage" 
$tabPage1.Controls.Add($VMGroupBox)

# Label für Zweitruf
$Label1 = New-Object System.Windows.Forms.Label
$Label1.Location = New-Object System.Drawing.Size(10,20) 
$Label1.Size = New-Object System.Drawing.Size(280,20) 
$Label1.Text = " 1 - Zweitruf unterbinden:" 
$ClientGroupBox.Controls.Add($Label1) 

# Label für Client nach Gespräch minimieren
$Label2 = New-Object System.Windows.Forms.Label
$Label2.Location = New-Object System.Drawing.Size(10,45) 
$Label2.Size = New-Object System.Drawing.Size(280,20) 
$Label2.Text = " 2 - Client nach Gespräch minimieren:" 
$ClientGroupBox.Controls.Add($Label2) 

# Label für Collaboration
$Label3 = New-Object System.Windows.Forms.Label
$Label3.Location = New-Object System.Drawing.Size(10,70) 
$Label3.Size = New-Object System.Drawing.Size(280,20) 
$Label3.Text = " 3 - Collaboration:" 
$ClientGroupBox.Controls.Add($Label3) 

# Label für Rufbenachrichtigung Taskleiste für Rufe
$Label4 = New-Object System.Windows.Forms.Label
$Label4.Location = New-Object System.Drawing.Size(10,95) 
$Label4.Size = New-Object System.Drawing.Size(280,20) 
$Label4.Text = " 4 - Rufbenachrichtigung in der Taskleiste für Rufe:" 
$ClientGroupBox.Controls.Add($Label4) 

# Label Rufbenachrichtigung Taskleiste für Rufsignalisierungen
$Label5 = New-Object System.Windows.Forms.Label
$Label5.Location = New-Object System.Drawing.Size(10,120) 
$Label5.Size = New-Object System.Drawing.Size(340,20) 
$Label5.Text = " 5 - Rufbenachrichtigung in der Taskleiste für Rufsignalisierungen:" 
$ClientGroupBox.Controls.Add($Label5) 

# Label beim Klingel anzeigen
$Label6 = New-Object System.Windows.Forms.Label
$Label6.Location = New-Object System.Drawing.Size(10,145) 
$Label6.Size = New-Object System.Drawing.Size(280,20) 
$Label6.Text = " 6 - Beim Klingeln anzeigen:" 
$ClientGroupBox.Controls.Add($Label6) 

# Label Verbinden durch auflegen
$Label7 = New-Object System.Windows.Forms.Label
$Label7.Location = New-Object System.Drawing.Size(10,170) 
$Label7.Size = New-Object System.Drawing.Size(280,20) 
$Label7.Text = " 7 - Verbinden durch auflegen:" 
$ClientGroupBox.Controls.Add($Label7) 

# Label Beim minimieren nur Symbol anzeigen
$Label8 = New-Object System.Windows.Forms.Label
$Label8.Location = New-Object System.Drawing.Size(10,195) 
$Label8.Size = New-Object System.Drawing.Size(280,20) 
$Label8.Text = " 8 - Beim minimieren nur Symbol anzeigen:" 
$ClientGroupBox.Controls.Add($Label8) 

# Label Aufmerksamkeitston für signalisierte Rufe
$Label9 = New-Object System.Windows.Forms.Label
$Label9.Location = New-Object System.Drawing.Size(10,220) 
$Label9.Size = New-Object System.Drawing.Size(280,20) 
$Label9.Text = " 9 - Aufmerksamkeitston für signalisierte Rufe:" 
$ClientGroupBox.Controls.Add($Label9) 

# Label Anklopfton für Zweitanrufe
$Label10 = New-Object System.Windows.Forms.Label
$Label10.Location = New-Object System.Drawing.Size(10,245) 
$Label10.Size = New-Object System.Drawing.Size(280,20) 
$Label10.Text = "10 - Anklopfton für Zweitanrufe:" 
$ClientGroupBox.Controls.Add($Label10) 

# Label  Headset Taste aktivieren
$Label11 = New-Object System.Windows.Forms.Label
$Label11.Location = New-Object System.Drawing.Size(10,270) 
$Label11.Size = New-Object System.Drawing.Size(280,20) 
$Label11.Text = "11 - Headset Taste aktivieren:" 
$ClientGroupBox.Controls.Add($Label11) 

# Label Authentifizierung Benutzername Kennwort
$Label12 = New-Object System.Windows.Forms.Label
$Label12.Location = New-Object System.Drawing.Size(10,295) 
$Label12.Size = New-Object System.Drawing.Size(280,20) 
$Label12.Text = "12 - Authentifizierung Benutzername Kennwort:" 
$ClientGroupBox.Controls.Add($Label12) 

# Label Authentifizierung Windows Account
$Label13 = New-Object System.Windows.Forms.Label
$Label13.Location = New-Object System.Drawing.Size(10,320) 
$Label13.Size = New-Object System.Drawing.Size(280,20) 
$Label13.Text = "13 - Authentifizierung Windows Account:" 
$ClientGroupBox.Controls.Add($Label13) 

# Label Minimieren nach Gespräch
$Label14 = New-Object System.Windows.Forms.Label
$Label14.Location = New-Object System.Drawing.Size(10,345) 
$Label14.Size = New-Object System.Drawing.Size(280,20) 
$Label14.Text = "14 - Minimieren nach Gespräch:" 
$ClientGroupBox.Controls.Add($Label14) 

# Label für Wahlwiederholungsliste 
$Labelww = New-Object System.Windows.Forms.Label
$Labelww.Location = New-Object System.Drawing.Size(10,20) 
$Labelww.Size = New-Object System.Drawing.Size(120,20) 
$Labelww.Text = "Wahlwiederholung:" 
$ListenGroupBox.Controls.Add($Labelww) 

# Label für Anruferliste
$Labelal = New-Object System.Windows.Forms.Label
$Labelal.Location = New-Object System.Drawing.Size(10,45) 
$Labelal.Size = New-Object System.Drawing.Size(120,20) 
$Labelal.Text = "Anrufliste:" 
$ListenGroupBox.Controls.Add($Labelal) 

# SecCalloff Checkbox ein 
$SecCalloffcheckbox = New-Object System.Windows.Forms.Checkbox
$SecCalloffcheckbox.Location = New-Object System.Drawing.Size(400,20)
$SecCalloffcheckbox.Size = New-Object System.Drawing.Size(40,20)
$SecCalloffcheckbox.Checked=$false
$SecCalloffcheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($SecCalloffcheckbox)

# SecCallon Checkbox aus 
$SecCalloncheckbox = New-Object System.Windows.Forms.Checkbox
$SecCalloncheckbox.Location = New-Object System.Drawing.Size(450,20)
$SecCalloncheckbox.Size = New-Object System.Drawing.Size(50,20)
$SecCalloncheckbox.Checked=$false
$SecCalloncheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($SecCalloncheckbox)

# Client minimieren nach Gespräch ein Checkbox 
$MinClientoncheckbox = New-Object System.Windows.Forms.Checkbox
$MinClientoncheckbox.Location = New-Object System.Drawing.Size(400,45)
$MinClientoncheckbox.Size = New-Object System.Drawing.Size(40,20)
$MinClientoncheckbox.Checked=$false
$MinClientoncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($MinClientoncheckbox)

# Client minimieren nach Gespräch aus Checkbox
$MinClientoffcheckbox = New-Object System.Windows.Forms.Checkbox
$MinClientoffcheckbox.Location = New-Object System.Drawing.Size(450,45)
$MinClientoffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$MinClientoffcheckbox.Checked=$false
$MinClientoffcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($MinClientoffcheckbox)

# Checkbox Collaboration ein 
$3oncheckbox = New-Object System.Windows.Forms.Checkbox
$3oncheckbox.Location = New-Object System.Drawing.Size(400,70)
$3oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$3oncheckbox.Checked=$false
$3oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($3oncheckbox)

# Checkbox Collaboration aus 
$3offcheckbox = New-Object System.Windows.Forms.Checkbox
$3offcheckbox.Location = New-Object System.Drawing.Size(450,70)
$3offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$3offcheckbox.Checked=$false
$3offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($3offcheckbox)

# Checkbox Rufbenachrichtigung Taskleiste für Rufe ein 
$4oncheckbox = New-Object System.Windows.Forms.Checkbox
$4oncheckbox.Location = New-Object System.Drawing.Size(400,95)
$4oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$4oncheckbox.Checked=$false
$4oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($4oncheckbox)

# Checkbox Rufbenachrichtigung Taskleiste für Rufe  aus 
$4offcheckbox = New-Object System.Windows.Forms.Checkbox
$4offcheckbox.Location = New-Object System.Drawing.Size(450,95)
$4offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$4offcheckbox.Checked=$false
$4offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($4offcheckbox)

# Checkbox Rufbenachrichtigung Taskleiste für Rufsignalisierungen  ein 
$5oncheckbox = New-Object System.Windows.Forms.Checkbox
$5oncheckbox.Location = New-Object System.Drawing.Size(400,120)
$5oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$5oncheckbox.Checked=$false
$5oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($5oncheckbox)

# Checkbox Rufbenachrichtigung Taskleiste für Rufsignalisierungen aus 
$5offcheckbox = New-Object System.Windows.Forms.Checkbox
$5offcheckbox.Location = New-Object System.Drawing.Size(450,120)
$5offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$5offcheckbox.Checked=$false
$5offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($5offcheckbox)

# Checkbox Beim Klingeln anzeigen ein 
$6oncheckbox = New-Object System.Windows.Forms.Checkbox
$6oncheckbox.Location = New-Object System.Drawing.Size(400,145)
$6oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$6oncheckbox.Checked=$false
$6oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($6oncheckbox)

# Checkbox Beim Klingeln anzeigen aus 
$6offcheckbox = New-Object System.Windows.Forms.Checkbox
$6offcheckbox.Location = New-Object System.Drawing.Size(450,145)
$6offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$6offcheckbox.Checked=$false
$6offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($6offcheckbox)

# Checkbox Verbinden durch Auflegen  ein 
$7oncheckbox = New-Object System.Windows.Forms.Checkbox
$7oncheckbox.Location = New-Object System.Drawing.Size(400,170)
$7oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$7oncheckbox.Checked=$false
$7oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($7oncheckbox)

# Checkbox Verbinden durch Auflegen aus 
$7offcheckbox = New-Object System.Windows.Forms.Checkbox
$7offcheckbox.Location = New-Object System.Drawing.Size(450,170)
$7offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$7offcheckbox.Checked=$false
$7offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($7offcheckbox)

# Checkbox Min. nur Symbol ein
$8oncheckbox = New-Object System.Windows.Forms.Checkbox
$8oncheckbox.Location = New-Object System.Drawing.Size(400,195)
$8oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$8oncheckbox.Checked=$false
$8oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($8oncheckbox)

# Checkbox Min. nur Symbol aus
$8offcheckbox = New-Object System.Windows.Forms.Checkbox
$8offcheckbox.Location = New-Object System.Drawing.Size(450,195)
$8offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$8offcheckbox.Checked=$false
$8offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($8offcheckbox)

# Checkbox Aufmerksamkeitston für signalisierte Rufe ein
$9oncheckbox = New-Object System.Windows.Forms.Checkbox
$9oncheckbox.Location = New-Object System.Drawing.Size(400,220)
$9oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$9oncheckbox.Checked=$false
$9oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($9oncheckbox)

# Checkbox Aufmerksamkeitston für signalisierte Rufe aus
$9offcheckbox = New-Object System.Windows.Forms.Checkbox
$9offcheckbox.Location = New-Object System.Drawing.Size(450,220)
$9offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$9offcheckbox.Checked=$false
$9offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($9offcheckbox)

# Checkbox Anklopen Zweitanruf ein
$10oncheckbox = New-Object System.Windows.Forms.Checkbox
$10oncheckbox.Location = New-Object System.Drawing.Size(400,245)
$10oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$10oncheckbox.Checked=$false
$10oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($10oncheckbox)

# Checkbox Anklopen Zweitanruf aus
$10offcheckbox = New-Object System.Windows.Forms.Checkbox
$10offcheckbox.Location = New-Object System.Drawing.Size(450,245)
$10offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$10offcheckbox.Checked=$false
$10offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($10offcheckbox)

# Checkbox Headset ein
$11oncheckbox = New-Object System.Windows.Forms.Checkbox
$11oncheckbox.Location = New-Object System.Drawing.Size(400,270)
$11oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$11oncheckbox.Checked=$false
$11oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($11oncheckbox)

# Checkbox Headset aus
$11offcheckbox = New-Object System.Windows.Forms.Checkbox
$11offcheckbox.Location = New-Object System.Drawing.Size(450,270)
$11offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$11offcheckbox.Checked=$false
$11offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($11offcheckbox)

# Checkbox Auth. PBX ein
$12oncheckbox = New-Object System.Windows.Forms.Checkbox
$12oncheckbox.Location = New-Object System.Drawing.Size(400,295)
$12oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$12oncheckbox.Checked=$false
$12oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($12oncheckbox)

# Checkbox Auth. PBX aus
$12offcheckbox = New-Object System.Windows.Forms.Checkbox
$12offcheckbox.Location = New-Object System.Drawing.Size(450,295)
$12offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$12offcheckbox.Checked=$false
$12offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($12offcheckbox)

# Checkbox Auth Windows-Konto ein
$13oncheckbox = New-Object System.Windows.Forms.Checkbox
$13oncheckbox.Location = New-Object System.Drawing.Size(400,320)
$13oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$13oncheckbox.Checked=$false
$13oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($13oncheckbox)

# Checkbox Auth Windows-Konto aus
$13offcheckbox = New-Object System.Windows.Forms.Checkbox
$13offcheckbox.Location = New-Object System.Drawing.Size(450,320)
$13offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$13offcheckbox.Checked=$false
$13offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($13offcheckbox)

# Checkbox Minimieren nach Gespräch ein
$14oncheckbox = New-Object System.Windows.Forms.Checkbox
$14oncheckbox.Location = New-Object System.Drawing.Size(400,345)
$14oncheckbox.Size = New-Object System.Drawing.Size(40,20)
$14oncheckbox.Checked=$false
$14oncheckbox.Text = "ein"
$ClientGroupBox.Controls.Add($14oncheckbox)

# Checkbox Minimieren nach Gespräch aus
$14offcheckbox = New-Object System.Windows.Forms.Checkbox
$14offcheckbox.Location = New-Object System.Drawing.Size(450,345)
$14offcheckbox.Size = New-Object System.Drawing.Size(50,20)
$14offcheckbox.Checked=$false
$14offcheckbox.Text = "aus"
$ClientGroupBox.Controls.Add($14offcheckbox)

# Checkbox Wahlwiederholungsliste
$wwcheckbox = New-Object System.Windows.Forms.checkbox
$wwcheckbox.Location = New-Object System.Drawing.Size(210,20)
$wwcheckbox.Size = New-Object System.Drawing.Size(90,20)
$wwcheckbox.Checked=$false
$wwcheckbox.Text = "setzen"
$ListenGroupBox.Controls.Add($wwcheckbox)

# Checkbox Anruferliste
$alcheckbox = New-Object System.Windows.Forms.checkbox
$alcheckbox.Location = New-Object System.Drawing.Size(210,45)
$alcheckbox.Size = New-Object System.Drawing.Size(90,20)
$alcheckbox.Checked=$false
$alcheckbox.Text = "setzen"
$ListenGroupBox.Controls.Add($alcheckbox)

# Checkbox Klingeln von CTI Geräten
$bcticheckbox = New-Object System.Windows.Forms.RadioButton
$bcticheckbox.Location = New-Object System.Drawing.Size(10,20)
$bcticheckbox.Size = New-Object System.Drawing.Size(55,20)
$bcticheckbox.Checked=$false
$bcticheckbox.Text = "beide"
$CtiGroupBox.Controls.Add($bcticheckbox)

# Checkbox Klingeln von CTI Geräten
$ccticheckbox = New-Object System.Windows.Forms.RadioButton
$ccticheckbox.Location = New-Object System.Drawing.Size(10,40)
$ccticheckbox.Size = New-Object System.Drawing.Size(150,20)
$ccticheckbox.Checked=$false
$ccticheckbox.Text = "CTI PhoneClient"
$CtiGroupBox.Controls.Add($ccticheckbox)

# Checkbox Klingeln von CTI Geräten
$ecticheckbox = New-Object System.Windows.Forms.RadioButton
$ecticheckbox.Location = New-Object System.Drawing.Size(10,60)
$ecticheckbox.Size = New-Object System.Drawing.Size(150,20)
$ecticheckbox.Checked=$false
$ecticheckbox.Text = "gesteuertes Endgerät"
$CtiGroupBox.Controls.Add($ecticheckbox)

# Checkbox Alt-X Groupbox1 TAB 1
$altxcheckbox = New-Object System.Windows.Forms.checkbox
$altxcheckbox.Location = New-Object System.Drawing.Size(10,25)
$altxcheckbox.Size = New-Object System.Drawing.Size(255,20)
$altxcheckbox.Checked=$false
$altxcheckbox.Text = "Hotkey ALT-X für Client in den Vordergrund"
$HotkeyGroupBox.Controls.Add($altxcheckbox)

# Checkbox Voicemail Begrüßungsansage Groupbox1 TAB 1
$vmcheckbox = New-Object System.Windows.Forms.RadioButton
$vmcheckbox.Location = New-Object System.Drawing.Size(10,20)
$vmcheckbox.Size = New-Object System.Drawing.Size(255,20)
$vmcheckbox.Checked=$false
$vmcheckbox.Text = "Standartansage ohne Aufzeichen"
$vmGroupBox.Controls.Add($vmcheckbox)

# Checkbox Voicemail Begrüßungsansage Groupbox1 TAB 1
$vmmcheckbox = New-Object System.Windows.Forms.RadioButton
$vmmcheckbox.Location = New-Object System.Drawing.Size(10,50)
$vmmcheckbox.Size = New-Object System.Drawing.Size(255,20)
$vmmcheckbox.Checked=$false
$vmmcheckbox.Text = "Standartansage mit Aufzeichen"
$vmGroupBox.Controls.Add($vmmcheckbox)

# Eingabe Wahlwiederholungsliste in Groupbox TAB 1
$ListenBox1 = New-Object System.Windows.Forms.TextBox
$ListenBox1.Location = New-Object System.Drawing.Size(160,20)
$ListenBox1.Size = New-Object System.Drawing.Size(30,20)
$ListenBox1.Text = "90"
$ListenGroupBox.Controls.Add($ListenBox1)

# Eingabe Anruferliste in Groupbox TAB 1 
$ListenBox2 = New-Object System.Windows.Forms.TextBox
$ListenBox2.Location = New-Object System.Drawing.Size(160,45)
$ListenBox2.Size = New-Object System.Drawing.Size(30,20)
$ListenBox2.Text = "90"
$ListenGroupBox.Controls.Add($ListenBox2)

# Ausgabe löschen Button 
$ClearButton = New-Object System.Windows.Forms.Button
$ClearButton.Location = New-Object System.Drawing.Size(300,470)
$ClearButton.Size = New-Object System.Drawing.Size(100,20)
$ClearButton.Text = „Ausgabe löschen“
$ClearButton.Add_Click({
			$Outputbox.Text = "" })
$form.Controls.Add($ClearButton)

# OK Button TAB 1
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(700,410)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "Ok"
$OKButton.Add_Click({ClientEinstellungen})
$tabPage1.Controls.Add($OKButton)

# Cancel Button TAB 1
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(780,410)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = „Ende“
$CancelButton.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage1.Controls.Add($CancelButton)

# Clear Button TAB 1
$ClearButton = New-Object System.Windows.Forms.Button
$ClearButton.Location = New-Object System.Drawing.Size(525,410)
$ClearButton.Size = New-Object System.Drawing.Size(80,23)
$ClearButton.Text = "zurücksetzen"
$ClearButton.Add_Click({ClearTab1})
$tabPage1.Controls.Add($ClearButton)

# Hilfe Button TAB 1
$HelpButton = New-Object System.Windows.Forms.Button
$HelpButton.Location = New-Object System.Drawing.Size(615,410)
$HelpButton.Size = New-Object System.Drawing.Size(75,23)
$HelpButton.Text = "Hilfe"
$HelpButton.Add_Click({HilfeTab1})
$tabPage1.Controls.Add($HelpButton)

# Ausgabe Beschriftung
$OutputBoxLabel = New-Object System.Windows.Forms.Label
$OutputBoxLabel.Location = New-Object System.Drawing.Size(10,470)
$OutputBoxLabel.Size = New-Object System.Drawing.Size(80,20)
$OutputBoxLabel.Text = "Ausgabe:"
$Form.Controls.Add($OutputBoxLabel)

# Ausgabe Textbereich
$Font = New-Object System.Drawing.Font("Tahoma",8,[System.Drawing.FontStyle]::Regular)
# Font styles are: Regular, Bold, Italic, Underline, Strikeout
$outputBox = New-Object System.Windows.Forms.TextBox
$outputBox.Location = New-Object System.Drawing.Size(10,492)
$outputBox.Size = New-Object System.Drawing.Size(875,150)
$outputBox.MultiLine = $True
$outputbox.Text = ""
$outputbox.Font = $Font
$outputbox.ForeColor = 'black'
$outputBox.ScrollBars = "Vertical"
$Form.Controls.Add($outputBox)

# Für alle Seiten (TABS)
# Statusleiste anlegen und mit Ausgangswert (Text) belegen
$statusBar = New-Object System.Windows.Forms.StatusBar
$statusBar.Name = "statusBar"
$statusBar.Text = "   Auswahl: Konfig-Gruppe"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 284
$System_Drawing_Size.Height = 22
$statusBar.Size = $System_Drawing_Size
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 0
$System_Drawing_Point.Y = 240
$statusBar.Location = $System_Drawing_Point
$statusBar.DataBindings.DefaultDataSourceUpdateMode = 0
$form.Controls.Add($statusBar)

# Label rechts unten (by M. Storck)
$Labelby = New-Object System.Windows.Forms.Label
$Labelby.Location = New-Object System.Drawing.Size(742,470) 
$Labelby.Size = New-Object System.Drawing.Size(150,22) 
$Labelby.Text = "Powered by Mathias Storck" 
$form.Controls.Add($Labelby) 

$form.Add_Shown({$form.Activate()})

# TAB 1
# Enter = Start
$form.AcceptButton = $OKButton
# TAB 1
# ESC = Ende
$form.CancelButton = $cancelButton 

# Ende TAB 1 Client Einstellungen ###########################################################

# Beginn TAB 2  Rufumleitungen ##############################################################
# Reiter2 anlegen
$tabPage2.TabIndex = 1
$tabPage2.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage2.Size = $System_Drawing_Size
$tabPage2.Text = "Rufumleitungen"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage2.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage2.Padding = $System_Windows_Forms_Padding
$tabPage2.Name = "tabPage2"
$tabPage2.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage2)

# Reiter 2 mit leben füllen
# Combobox TAB 2 Label   
$Labeltab2 = New-Object System.Windows.Forms.Label
$Labeltab2.Location = New-Object System.Drawing.Size(10,10) 
$Labeltab2.Size = New-Object System.Drawing.Size(280,20) 
$Labeltab2.Text = "Bitte eine Gruppe auswählen" 
$tabPage2.Controls.Add($Labeltab2)

# Combobox TAB 2 Gruppen  
$Comboboxtab2 = New-Object System.Windows.Forms.Combobox 
$Comboboxtab2.Location = New-Object System.Drawing.Size(10,32) 
$Comboboxtab2.Size = New-Object System.Drawing.Size(260,20) 
#[void] $Combobox.Items.Add(" ")
[void] $Comboboxtab2.Items.Add("Konfig-Gruppe")
[void] $Comboboxtab2.Items.Add("Vertrieb")
[void] $Comboboxtab2.Items.Add("Verkauf")
[void] $Comboboxtab2.Items.Add("Jeder")
$Comboboxtab2.SelectedIndex = 0
$Comboboxtab2.Height = 70
$Comboboxtab2.add_DropDownClosed({$statusBar.Text = "Auswahl: "+$Comboboxtab2.SelectedItem +" " +$TextBox.Text})
$Comboboxtab2.add_DropDownClosed({$combobox.SelectedItem = $comboboxtab2.SelectedItem})
$Comboboxtab2.add_DropDownClosed({$comboboxtab3.SelectedItem = $comboboxtab2.SelectedItem})
$Comboboxtab2.add_DropDownClosed({$comboboxtab6.SelectedItem = $comboboxtab2.SelectedItem})
$Comboboxtab2.add_DropDownClosed({$comboboxtab9.SelectedItem = $comboboxtab2.SelectedItem})
$Comboboxtab2.TabIndex = 0
$tabPage2.Controls.Add($Comboboxtab2)
#$form.Topmost = $True

# Rufumleitungen GroupBox TAB 2
$RufumlGroupBox = New-Object System.Windows.Forms.GroupBox
$RufumlGroupBox.Location = New-Object System.Drawing.Size(330,290) 
$RufumlGroupBox.size = New-Object System.Drawing.Size(340,120) 
$RufumlGroupBox.text = "Rufumleitungen" 
$tabPage2.Controls.Add($RufumlGroupBox)

# Zeit GroupBox TAB 2
$ZeitGroupBox = New-Object System.Windows.Forms.GroupBox
$ZeitGroupBox.Location = New-Object System.Drawing.Size(330,200) 
$ZeitGroupBox.size = New-Object System.Drawing.Size(340,70) 
$ZeitGroupBox.text = "Zeit für Rufumleitung" 
$tabPage2.Controls.Add($ZeitGroupBox)

# Rufumleitungsziele GroupBox TAB 2
$umltargetGroupBox = New-Object System.Windows.Forms.GroupBox
$umltargetGroupBox.Location = New-Object System.Drawing.Size(330,20) 
$umltargetGroupBox.size = New-Object System.Drawing.Size(340,160) 
$umltargetGroupBox.text = "Rufumleitungsziele" 
$tabPage2.Controls.Add($umltargetGroupBox)

# Label für Rufumleitungen sofort
$Labelumli = New-Object System.Windows.Forms.Label
$Labelumli.Location = New-Object System.Drawing.Size(10,30) 
$Labelumli.Size = New-Object System.Drawing.Size(100,20) 
$Labelumli.Text = "Sofort:" 
$RufumlGroupBox.Controls.Add($Labelumli) 

# Label für Rufumleitungen besetzt
$Labelumlb = New-Object System.Windows.Forms.Label
$Labelumlb.Location = New-Object System.Drawing.Size(10,60) 
$Labelumlb.Size = New-Object System.Drawing.Size(100,20) 
$Labelumlb.Text = "bei Besetzt:" 
$RufumlGroupBox.Controls.Add($Labelumlb) 

# Label für Rufumleitung nach Zeit
$Labelumlt = New-Object System.Windows.Forms.Label
$Labelumlt.Location = New-Object System.Drawing.Size(10,90) 
$Labelumlt.Size = New-Object System.Drawing.Size(100,20) 
$Labelumlt.Text = "Nach Zeit:" 
$RufumlGroupBox.Controls.Add($Labelumlt) 

# Label für Zeit Rufumleitung  bei frei
$Labelumltt = New-Object System.Windows.Forms.Label
$Labelumltt.Location = New-Object System.Drawing.Size(10,30) 
$Labelumltt.Size = New-Object System.Drawing.Size(150,20) 
$Labelumltt.Text = "bei frei in Sekunden:" 
$ZeitGroupBox.Controls.Add($Labelumltt) 

# Label für Rufulmleitungsziel Ziel besetzt
$Labelumltb = New-Object System.Windows.Forms.Label
$Labelumltb.Location = New-Object System.Drawing.Size(10,30) 
$Labelumltb.Size = New-Object System.Drawing.Size(100,20) 
$Labelumltb.Text = "Ziel bei besetzt:" 
$umltargetGroupBox.Controls.Add($Labelumltb) 

# Label für Rufulmleitungsziel nach Zeit 
$Label22 = New-Object System.Windows.Forms.Label
$Label22.Location = New-Object System.Drawing.Size(10,60) 
$Label22.Size = New-Object System.Drawing.Size(100,20) 
$Label22.Text = "Ziel nach Zeit:" 
$umltargetGroupBox.Controls.Add($Label22) 

# Label für Rufulmleitungsziel sofort
$Label23 = New-Object System.Windows.Forms.Label
$Label23.Location = New-Object System.Drawing.Size(10,90) 
$Label23.Size = New-Object System.Drawing.Size(100,20)
$Label23.Text = "Ziel sofort:" 
$umltargetGroupBox.Controls.Add($Label23) 

# Eingabe Uml. Ziel bei besetzt
$ListenBox3 = New-Object System.Windows.Forms.TextBox
$ListenBox3.Location = New-Object System.Drawing.Size(132,30)
$ListenBox3.Size = New-Object System.Drawing.Size(30,20)
$ListenBox3.Text = "100"
$umltargetGroupBox.Controls.Add($ListenBox3)

# Eingabe Uml. Ziel nach Zeit
$ListenBox4 = New-Object System.Windows.Forms.TextBox
$ListenBox4.Location = New-Object System.Drawing.Size(132,60)
$ListenBox4.Size = New-Object System.Drawing.Size(30,20)
$ListenBox4.Text = "100"
$umltargetGroupBox.Controls.Add($ListenBox4)

# Eingabe Uml. Ziel sofort 
$ListenBox5 = New-Object System.Windows.Forms.TextBox
$ListenBox5.Location = New-Object System.Drawing.Size(132,90)
$ListenBox5.Size = New-Object System.Drawing.Size(30,20)
$ListenBox5.Text = "100"
$umltargetGroupBox.Controls.Add($ListenBox5)

# Eingabe Weiterleitungszeit bei frei
$ZeitBox = New-Object System.Windows.Forms.TextBox
$ZeitBox.Location = New-Object System.Drawing.Size(160,30)
$ZeitBox.Size = New-Object System.Drawing.Size(30,20)
$ZeitBox.Text = "20"
$ZeitGroupBox.Controls.Add($ZeitBox)

# Checkbox ein Rufumleitung sofort
$iumloncheckbox = New-Object System.Windows.Forms.checkbox
$iumloncheckbox.Location = New-Object System.Drawing.Size(160,30)
$iumloncheckbox.Size = New-Object System.Drawing.Size(50,20)
$iumloncheckbox.Checked=$false
$iumloncheckbox.Text = "ein"
$RufumlGroupBox.Controls.Add($iumloncheckbox)

# Checkbox aus Rufumleitung sofort
$iumloffcheckbox = New-Object System.Windows.Forms.checkbox
$iumloffcheckbox.Location = New-Object System.Drawing.Size(210,30)
$iumloffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$iumloffcheckbox.Checked=$false
$iumloffcheckbox.Text = "aus"
$RufumlGroupBox.Controls.Add($iumloffcheckbox)

# Checkbox ein Rufumleitung besetzt
$bumloncheckbox = New-Object System.Windows.Forms.checkbox
$bumloncheckbox.Location = New-Object System.Drawing.Size(160,60)
$bumloncheckbox.Size = New-Object System.Drawing.Size(50,20)
$bumloncheckbox.Checked=$false
$bumloncheckbox.Text = "ein"
$RufumlGroupBox.Controls.Add($bumloncheckbox)

# Checkbox aus Rufumleitung besetzt
$bumloffcheckbox = New-Object System.Windows.Forms.checkbox
$bumloffcheckbox.Location = New-Object System.Drawing.Size(210,60)
$bumloffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$bumloffcheckbox.Checked=$false
$bumloffcheckbox.Text = "aus"
$RufumlGroupBox.Controls.Add($bumloffcheckbox)

# Checkbox ein Rufumleitung nach Zeit
$tumloncheckbox = New-Object System.Windows.Forms.checkbox
$tumloncheckbox.Location = New-Object System.Drawing.Size(160,90)
$tumloncheckbox.Size = New-Object System.Drawing.Size(50,20)
$tumloncheckbox.Checked=$false
$tumloncheckbox.Text = "ein"
$RufumlGroupBox.Controls.Add($tumloncheckbox)

# Checkbox aus Rufumleitung nach Zeit
$tumloffcheckbox = New-Object System.Windows.Forms.checkbox
$tumloffcheckbox.Location = New-Object System.Drawing.Size(210,90)
$tumloffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$tumloffcheckbox.Checked=$false
$tumloffcheckbox.Text = "aus"
$RufumlGroupBox.Controls.Add($tumloffcheckbox)

# Checkbox aus Weiterleitung nach Zeit
$timecheckbox = New-Object System.Windows.Forms.checkbox
$timecheckbox.Location = New-Object System.Drawing.Size(210,30)
$timecheckbox.Size = New-Object System.Drawing.Size(90,20)
$timecheckbox.Checked=$false
$timecheckbox.Text = "setzen"
$ZeitGroupBox.Controls.Add($timecheckbox)

# Checkbox Rufuml. Ziel sofort
$umltarget1 = New-Object System.Windows.Forms.checkbox
$umltarget1.Location = New-Object System.Drawing.Size(210,30)
$umltarget1.Size = New-Object System.Drawing.Size(90,20)
$umltarget1.Checked=$false
$umltarget1.Text = "setzen"
$umltargetGroupBox.Controls.Add($umltarget1)

# Checkbox Rufuml. Ziel nach Zeit
$umltarget2 = New-Object System.Windows.Forms.checkbox
$umltarget2.Location = New-Object System.Drawing.Size(210,60)
$umltarget2.Size = New-Object System.Drawing.Size(90,20)
$umltarget2.Checked=$false
$umltarget2.Text = "setzen"
$umltargetGroupBox.Controls.Add($umltarget2)

# Checkbox Rufuml. Sofort
$umltarget3 = New-Object System.Windows.Forms.checkbox
$umltarget3.Location = New-Object System.Drawing.Size(210,90)
$umltarget3.Size = New-Object System.Drawing.Size(90,20)
$umltarget3.Checked=$false
$umltarget3.Text = "setzen"
$umltargetGroupBox.Controls.Add($umltarget3)

# Clear Button TAB 2
$ClearButtontab2 = New-Object System.Windows.Forms.Button
$ClearButtontab2.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab2.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab2.Text = "zurücksetzen"
$ClearButtontab2.Add_Click({ClearTab2})
$tabPage2.Controls.Add($ClearButtontab2)

# Hilfe Button TAB 2
$HelpButtontab2 = New-Object System.Windows.Forms.Button
$HelpButtontab2.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab2.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab2.Text = "Hilfe"
$HelpButtontab2.Add_Click({HilfeTab2})
$tabPage2.Controls.Add($HelpButtontab2)

# OK Button TAB 2
$OKButton2 = New-Object System.Windows.Forms.Button
$OKButton2.Location = New-Object System.Drawing.Size(700,410)
$OKButton2.Size = New-Object System.Drawing.Size(75,23)
$OKButton2.Text = "Ok"
$OKButton2.Add_Click({Rufumleitungen})
$tabPage2.Controls.Add($OKButton2)

# Cancel Button TAB 2
$CancelButton2 = New-Object System.Windows.Forms.Button
$CancelButton2.Location = New-Object System.Drawing.Size(780,410)
$CancelButton2.Size = New-Object System.Drawing.Size(75,23)
$CancelButton2.Text = „Ende“
$CancelButton2.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage2.Controls.Add($CancelButton2)

# Ende TAB 2 Rufumleitungen ##############################################################

# Beginn TAB 3 Telefoneinstellungen ######################################################
# Reiter3 anlegen
$tabPage3.TabIndex = 2
$tabPage3.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage3.Size = $System_Drawing_Size
$tabPage3.Text = "Telefon Einstellungen"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage3.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage3.Padding = $System_Windows_Forms_Padding
$tabPage3.Name = "tabPage3"
$tabPage3.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage3)

# Combobox TAB 3 Label   
$Labeltab3 = New-Object System.Windows.Forms.Label
$Labeltab3.Location = New-Object System.Drawing.Size(10,10) 
$Labeltab3.Size = New-Object System.Drawing.Size(280,20) 
$Labeltab3.Text = "Bitte eine Gruppe auswählen" 
$tabPage3.Controls.Add($Labeltab3)

# Combobox TAB 3 Gruppen  
$Comboboxtab3 = New-Object System.Windows.Forms.Combobox 
$Comboboxtab3.Location = New-Object System.Drawing.Size(10,32) 
$Comboboxtab3.Size = New-Object System.Drawing.Size(260,20) 
#[void] $Combobox.Items.Add(" ")
[void] $Comboboxtab3.Items.Add("Konfig-Gruppe")
[void] $Comboboxtab3.Items.Add("Vertrieb")
[void] $Comboboxtab3.Items.Add("Verkauf")
[void] $Comboboxtab3.Items.Add("Jeder")
$Comboboxtab3.SelectedIndex = 0
$Comboboxtab3.Height = 70
$Comboboxtab3.add_DropDownClosed({$statusBar.Text = "Auswahl: "+$Comboboxtab3.SelectedItem +" " +$TextBox.Text})
$Comboboxtab3.add_DropDownClosed({$combobox.SelectedItem = $comboboxtab3.SelectedItem})
$Comboboxtab3.add_DropDownClosed({$comboboxtab2.SelectedItem = $comboboxtab3.SelectedItem})
$Comboboxtab3.add_DropDownClosed({$comboboxtab6.SelectedItem = $comboboxtab3.SelectedItem})
$Comboboxtab3.add_DropDownClosed({$comboboxtab9.SelectedItem = $comboboxtab3.SelectedItem})
$Comboboxtab3.TabIndex = 0
$tabPage3.Controls.Add($Comboboxtab3)
#$form.Topmost = $True

# Telefon Optionen GroupBox TAB 3
$PhoneGroupBox = New-Object System.Windows.Forms.GroupBox
$PhoneGroupBox.Location = New-Object System.Drawing.Size(330,15) 
$PhoneGroupBox.size = New-Object System.Drawing.Size(540,170) 
$PhoneGroupBox.text = "Telefon Optionen" 
$tabPage3.Controls.Add($PhoneGroupBox)

# Telefon PIN GroupBox TAB 3
$PinGroupBox = New-Object System.Windows.Forms.GroupBox
$PinGroupBox.Location = New-Object System.Drawing.Size(330,190) 
$PinGroupBox.size = New-Object System.Drawing.Size(540,60) 
$PinGroupBox.text = "Telefon PIN" 
$tabPage3.Controls.Add($PinGroupBox)

# Telefon Funktionstasten GroupBox TAB 3
$FunktionstastenGroupBox = New-Object System.Windows.Forms.GroupBox
$FunktionstastenGroupBox.Location = New-Object System.Drawing.Size(330,270) 
$FunktionstastenGroupBox.size = New-Object System.Drawing.Size(540,100) 
$FunktionstastenGroupBox.text = "Kopieren von Funktionstasten der IP Telefone" 
$tabPage3.Controls.Add($FunktionstastenGroupBox)

# Label Klingel Lautstärke IP Telefon erhöhen
$Label1tab3 = New-Object System.Windows.Forms.Label
$Label1tab3.Location = New-Object System.Drawing.Size(10,20) 
$Label1tab3.Size = New-Object System.Drawing.Size(280,20) 
$Label1tab3.Text = " 1 - Klingel Lautstärke IP Telefon erhöhen (0 - 7):" 
$PhoneGroupBox.Controls.Add($Label1tab3) 

# Label Automatsich anmelden
$Label2tab3 = New-Object System.Windows.Forms.Label
$Label2tab3.Location = New-Object System.Drawing.Size(10,45) 
$Label2tab3.Size = New-Object System.Drawing.Size(280,20) 
$Label2tab3.Text = " 2 - IP-Telefon Automatsich anmelden:" 
$PhoneGroupBox.Controls.Add($Label2tab3) 

# Label Auto Firmware Updaten
$Label3tab3 = New-Object System.Windows.Forms.Label
$Label3tab3.Location = New-Object System.Drawing.Size(10,70) 
$Label3tab3.Size = New-Object System.Drawing.Size(280,20) 
$Label3tab3.Text = " 3 - Auto Firmware Update IP Telefon:" 
$PhoneGroupBox.Controls.Add($Label3tab3) 

# Label MAC Adresse löschen
$Label4tab3 = New-Object System.Windows.Forms.Label
$Label4tab3.Location = New-Object System.Drawing.Size(10,95) 
$Label4tab3.Size = New-Object System.Drawing.Size(280,20)
#$Label4tab3.ForeColor = “Magenta”
$Label4tab3.Text = " 4 - MAC Adresse IP-Telefon löschen:" 
$PhoneGroupBox.Controls.Add($Label4tab3)

# Label PIN IP-Telefon 1 x eigene Rufnummer
$Label5tab3 = New-Object System.Windows.Forms.Label
$Label5tab3.Location = New-Object System.Drawing.Size(10,120)
$Label5tab3.Size = New-Object System.Drawing.Size(280,20)
$Label5tab3.Text = " 5 - PIN IP-Telefon 1 x eigene Rufnummer:" 
$PhoneGroupBox.Controls.Add($Label5tab3)

# Label PIN IP-Telefon eigene Rufnummer + 00000
$Label6tab3 = New-Object System.Windows.Forms.Label
$Label6tab3.Location = New-Object System.Drawing.Size(10,145) 
$Label6tab3.Size = New-Object System.Drawing.Size(300,20) 
$Label6tab3.Text = " 6 - PIN IP-Telefon eigene Rufnummer 6-stellig auffüllen:" 
$PhoneGroupBox.Controls.Add($Label6tab3) 

# Label PIN IP-Telefon auslesen
$Label7tab3 = New-Object System.Windows.Forms.Label
$Label7tab3.Location = New-Object System.Drawing.Size(10,25) 
$Label7tab3.Size = New-Object System.Drawing.Size(230,20) 
$Label7tab3.Text = " 7 - PIN IP-Telefone auslesen:" 
$PinGroupBox.Controls.Add($Label7tab3) 

# Label Funktionstatsten IP-Telefon kopieren
$Label8tab3 = New-Object System.Windows.Forms.Label
$Label8tab3.Location = New-Object System.Drawing.Size(10,25) 
$Label8tab3.Size = New-Object System.Drawing.Size(480,20) 
$Label8tab3.Text = " 8 - Funktionstasten eines Users auf alle User der Gruppe schreiben:   Muster User? :" 
$FunktionstastenGroupBox.Controls.Add($Label8tab3) 


# Label Funktionstasten eines Users auf alle User der Konfig-Gruppe schreiben
$Label8M1tab3 = New-Object System.Windows.Forms.Label
$Label8M1tab3.Location = New-Object System.Drawing.Size(10,45) 
$Label8M1tab3.Size = New-Object System.Drawing.Size(260,40) 
$Label8M1tab3.Text = "     Bitte die Rufnummer des Musteruser eingeben:" 
$FunktionstastenGroupBox.Controls.Add($Label8M1tab3) 

# Eingabe Uml. Ziel bei besetzt
$KlingelListenBox = New-Object System.Windows.Forms.TextBox
$KlingelListenBox.Location = New-Object System.Drawing.Size(330,20)
$KlingelListenBox.Size = New-Object System.Drawing.Size(30,20)
$KlingelListenBox.Text = "3"
$PhoneGroupBox.Controls.Add($KlingelListenBox)

# Checkbox IP Tel autom. anmelden ein 
$autanoncheckbox = New-Object System.Windows.Forms.checkbox
$autanoncheckbox.Location = New-Object System.Drawing.Size(390,45)
$autanoncheckbox.Size = New-Object System.Drawing.Size(40,20)
$autanoncheckbox.Checked=$false
$autanoncheckbox.Text = "ein"
$PhoneGroupBox.Controls.Add($autanoncheckbox)

# Checkbox IP Tel autom. anmelden aus 
$autanoffcheckbox = New-Object System.Windows.Forms.checkbox
$autanoffcheckbox.Location = New-Object System.Drawing.Size(450,45)
$autanoffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$autanoffcheckbox.Checked=$false
$autanoffcheckbox.Text = "aus"
$PhoneGroupBox.Controls.Add($autanoffcheckbox)

# Checkbox Auto Firmware Update ein 
$autfwoncheckbox = New-Object System.Windows.Forms.checkbox
$autfwoncheckbox.Location = New-Object System.Drawing.Size(390,70)
$autfwoncheckbox.Size = New-Object System.Drawing.Size(40,20)
$autfwoncheckbox.Checked=$false
$autfwoncheckbox.Text = "ein"
$PhoneGroupBox.Controls.Add($autfwoncheckbox)

# Checkbox Auto Firmware Update aus 
$autfwoffcheckbox = New-Object System.Windows.Forms.checkbox
$autfwoffcheckbox.Location = New-Object System.Drawing.Size(450,70)
$autfwoffcheckbox.Size = New-Object System.Drawing.Size(50,20)
$autfwoffcheckbox.Checked=$false
$autfwoffcheckbox.Text = "aus"
$PhoneGroupBox.Controls.Add($autfwoffcheckbox)

# Checkbox MAC löschen 
$maccheckbox = New-Object System.Windows.Forms.checkbox
$maccheckbox.Location = New-Object System.Drawing.Size(390,95)
$maccheckbox.Size = New-Object System.Drawing.Size(100,20)
$maccheckbox.Checked=$false
#$maccheckbox.ForeColor = “Magenta”
$maccheckbox.Text = "löschen"
$PhoneGroupBox.Controls.Add($maccheckbox)

# Checkbox PIN 1 x eigene Nummer 
$1xpincheckbox = New-Object System.Windows.Forms.checkbox
$1xpincheckbox.Location = New-Object System.Drawing.Size(390,120)
$1xpincheckbox.Size = New-Object System.Drawing.Size(100,20)
$1xpincheckbox.Checked=$false
$1xpincheckbox.Text = "setzen"
$PhoneGroupBox.Controls.Add($1xpincheckbox)

# Checkbox PIN 2 x eigene Nummer 
$2xpincheckbox = New-Object System.Windows.Forms.checkbox
$2xpincheckbox.Location = New-Object System.Drawing.Size(390,145)
$2xpincheckbox.Size = New-Object System.Drawing.Size(100,20)
$2xpincheckbox.Checked=$false
$2xpincheckbox.Text = "setzen"
$PhoneGroupBox.Controls.Add($2xpincheckbox)

# Checkbox Klingellautstärke
$klingelcheckbox = New-Object System.Windows.Forms.checkbox
$klingelcheckbox.Location = New-Object System.Drawing.Size(390,20)
$klingelcheckbox.Size = New-Object System.Drawing.Size(90,20)
$klingelcheckbox.Checked=$false
$klingelcheckbox.Text = "setzen"
$PhoneGroupBox.Controls.Add($klingelcheckbox)

# auslesen Button TAB 3
$auslesenButton = New-Object System.Windows.Forms.Button
$auslesenButton.Location = New-Object System.Drawing.Size(250,20)
$auslesenButton.Size = New-Object System.Drawing.Size(120,25)
$auslesenButton.Text = "PIN auslesen"
#$auslesenButton.Name = "OK"
#$auslesenButton.DialogResult = "OK"
$auslesenButton.Add_Click({Pinauslesen})
$PinGroupBox.Controls.Add($auslesenButton)

# Export Button TAB 3
$exportButton = New-Object System.Windows.Forms.Button
$exportButton.Location = New-Object System.Drawing.Size(390,20)
$exportButton.Size = New-Object System.Drawing.Size(120,25)
$exportButton.Text = "PIN Export"
$exportButton.Add_Click({Pinexport})
$PinGroupBox.Controls.Add($exportButton)

# Eingabe MusterUser für Funktionstasten TAB 3:
$CopyFTListenBox = New-Object System.Windows.Forms.TextBox
$CopyFTListenBox.Location = New-Object System.Drawing.Size(300,45)
$CopyFTListenBox.Size = New-Object System.Drawing.Size(30,20)
$CopyFTListenBox.Text = "99"
$FunktionstastenGroupBox.Controls.Add($CopyFTListenBox)

# Checkbox  Funktionstasten TAB 3 eines Users auf alle User der Gruppe schreiben 
$1oncheckboxtab3 = New-Object System.Windows.Forms.checkbox
$1oncheckboxtab3.Location = New-Object System.Drawing.Size(440,45)
$1oncheckboxtab3.Size = New-Object System.Drawing.Size(80,20)
$1oncheckboxtab3.Checked=$false
$1oncheckboxtab3.Text = "schreiben"
$FunktionstastenGroupBox.Controls.Add($1oncheckboxtab3)


# Clear Button TAB 3
$ClearButtontab3 = New-Object System.Windows.Forms.Button
$ClearButtontab3.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab3.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab3.Text = "zurücksetzen"
$ClearButtontab3.Add_Click({ClearTab3})
$tabPage3.Controls.Add($ClearButtontab3)

# Hilfe Button TAB 1
$HelpButtontab3 = New-Object System.Windows.Forms.Button
$HelpButtontab3.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab3.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab3.Text = "Hilfe"
$HelpButtontab3.Add_Click({HilfeTab3})
$tabPage3.Controls.Add($HelpButtontab3)

# OK Button TAB 3
$OKButton3 = New-Object System.Windows.Forms.Button
$OKButton3.Location = New-Object System.Drawing.Size(700,410)
$OKButton3.Size = New-Object System.Drawing.Size(75,23)
$OKButton3.Text = "Ok"
$OKButton3.Add_Click({Telefoneinstellungen})
$tabPage3.Controls.Add($OKButton3)

# Cancel Button TAB 3
$CancelButton3 = New-Object System.Windows.Forms.Button
$CancelButton3.Location = New-Object System.Drawing.Size(780,410)
$CancelButton3.Size = New-Object System.Drawing.Size(75,23)
$CancelButton3.Text = „Ende“
$CancelButton3.DialogResult = „Cancel“
$CancelButton3.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage3.Controls.Add($CancelButton3)

# Ende TAB 3 Telefoneinstellungen #########################################

# Beginn TAB 4 Windows Features ###########################################
# Reiter4 anlegen
$tabPage4.TabIndex = 3
$tabPage4.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage4.Size = $System_Drawing_Size
$tabPage4.Text = "Windows Features"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage4.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage4.Padding = $System_Windows_Forms_Padding
$tabPage4.Name = "tabPage4"
$tabPage4.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage4)

# Windows Features GroupBox TAB 4
$FeaturesGroupBox = New-Object System.Windows.Forms.GroupBox
$FeaturesGroupBox.Location = New-Object System.Drawing.Size(330,15) 
$FeaturesGroupBox.size = New-Object System.Drawing.Size(540,160) 
$FeaturesGroupBox.text = "Windows Features" 
$tabPage4.Controls.Add($FeaturesGroupBox)

# Windows Einstellungen GroupBox TAB 4
$SettingsGroupBox = New-Object System.Windows.Forms.GroupBox
$SettingsGroupBox.Location = New-Object System.Drawing.Size(330,189) 
$SettingsGroupBox.size = New-Object System.Drawing.Size(540,216) 
$SettingsGroupBox.text = "Windows Einstellungen" 
$tabPage4.Controls.Add($SettingsGroupBox)

# Secpol GroupBox TAB 4
$SecpolGroupBox = New-Object System.Windows.Forms.GroupBox
$SecpolGroupBox.Location = New-Object System.Drawing.Size(10,15) 
$SecpolGroupBox.size = New-Object System.Drawing.Size(300,190) 
$SecpolGroupBox.text = "Netzwerke auf Privat" 
$tabPage4.Controls.Add($SecpolGroupBox)

# Gpedit GroupBox TAB 4
$GpeditGroupBox = New-Object System.Windows.Forms.GroupBox
$GpeditGroupBox.Location = New-Object System.Drawing.Size(10,215) 
$GpeditGroupBox.size = New-Object System.Drawing.Size(300,190) 
$GpeditGroupBox.text = "DSCP Wert 46" 
$tabPage4.Controls.Add($GpeditGroupBox)

# Label Secpol
$Labelsecpoltab4 = New-Object System.Windows.Forms.Label
$Labelsecpoltab4.Location = New-Object System.Drawing.Size(10,30) 
$Labelsecpoltab4.Size = New-Object System.Drawing.Size(280,100) 
$Labelsecpoltab4.Text = "Anleitung:`r`nNetzwerklisten-Manager-Richtlinien,`r`nnicht identifizierte Netzwerke, Eigenschaften:`r`nStandorttyp auf Privat setzen" 
$SecpolGroupBox.Controls.Add($Labelsecpoltab4) 

# Secpol Button TAB 4
$secpolButton = New-Object System.Windows.Forms.Button
$secpolButton.Location = New-Object System.Drawing.Size(100,140)
$secpolButton.Size = New-Object System.Drawing.Size(100,25)
$secpolButton.Text = "Secpol starten"
$secpolButton.Add_Click({secpol.msc})
$SecpolGroupBox.Controls.Add($secpolButton)

# Label Gpedit
$Labelgpedit1tab4 = New-Object System.Windows.Forms.Label
$Labelgpedit1tab4.Location = New-Object System.Drawing.Size(10,30) 
$Labelgpedit1tab4.Size = New-Object System.Drawing.Size(280,100) 
$Labelgpedit1tab4.Text = "Anleitung:`r`nComputerkonfiguration, Administrative Vorlagen,`r`nNetzwerk,QoS-Paketplaner`r`nDSCP-Wert von übereinstimmenden Paketen,`r`nGarantierter Diensttyp:`r`nAktiveren und DSCP-Wert auf 46 stellen." 
$GpeditGroupBox.Controls.Add($Labelgpedit1tab4) 

# Gpedit Button TAB 4
$gpeditButton = New-Object System.Windows.Forms.Button
$gpeditButton.Location = New-Object System.Drawing.Size(100,140)
$gpeditButton.Size = New-Object System.Drawing.Size(100,25)
$gpeditButton.Text = "Gpedit starten"
$gpeditButton.Add_Click({gpedit.msc})
$GpeditGroupBox.Controls.Add($gpeditButton)

# Label Telnet Client installieren
$Label1tab4 = New-Object System.Windows.Forms.Label
$Label1tab4.Location = New-Object System.Drawing.Size(10,30) 
$Label1tab4.Size = New-Object System.Drawing.Size(150,20) 
$Label1tab4.Text = " 1 - Telnet Client installieren:" 
$FeaturesGroupBox.Controls.Add($Label1tab4) 

# Checkbox Telnet Client installieren
$telnetcheckbox = New-Object System.Windows.Forms.checkbox
$telnetcheckbox.Location = New-Object System.Drawing.Size(400,30)
$telnetcheckbox.Size = New-Object System.Drawing.Size(90,20)
$telnetcheckbox.Checked=$false
$telnetcheckbox.Text = "installieren"
$FeaturesGroupBox.Controls.Add($telnetcheckbox)

# Label FTP Server installieren
$Label2tab4 = New-Object System.Windows.Forms.Label
$Label2tab4.Location = New-Object System.Drawing.Size(10,51) 
$Label2tab4.Size = New-Object System.Drawing.Size(150,20) 
$Label2tab4.Text = " 2 - FTP Server installieren:" 
$FeaturesGroupBox.Controls.Add($Label2tab4) 

# Checkbox FTP Server installieren
$ftpcheckbox = New-Object System.Windows.Forms.checkbox
$ftpcheckbox.Location = New-Object System.Drawing.Size(400,51)
$ftpcheckbox.Size = New-Object System.Drawing.Size(90,20)
$ftpcheckbox.Checked=$false
$ftpcheckbox.Text = "installieren"
$FeaturesGroupBox.Controls.Add($ftpcheckbox)

# Label WEB Server installieren
$Label3tab4 = New-Object System.Windows.Forms.Label
$Label3tab4.Location = New-Object System.Drawing.Size(10,72) 
$Label3tab4.Size = New-Object System.Drawing.Size(150,20) 
$Label3tab4.Text = " 3 - WEB Server installieren:" 
$FeaturesGroupBox.Controls.Add($Label3tab4) 

# Checkbox WEB Server installieren
$webcheckbox = New-Object System.Windows.Forms.checkbox
$webcheckbox.Location = New-Object System.Drawing.Size(400,72)
$webcheckbox.Size = New-Object System.Drawing.Size(90,20)
$webcheckbox.Checked=$false
$webcheckbox.Text = "installieren"
$FeaturesGroupBox.Controls.Add($webcheckbox)

# Label Snipping Tool installieren
$LabelSniptab4 = New-Object System.Windows.Forms.Label
$LabelSniptab4.Location = New-Object System.Drawing.Size(10,93) 
$LabelSniptab4.Size = New-Object System.Drawing.Size(300,20) 
$LabelSniptab4.Text = " 4 - Snipping Tool installieren: (Neustart erforderlich)" 
$FeaturesGroupBox.Controls.Add($LabelSniptab4) 

# Checkbox Snipping Tool installieren
$snipcheckbox = New-Object System.Windows.Forms.checkbox
$snipcheckbox.Location = New-Object System.Drawing.Size(400,93)
$snipcheckbox.Size = New-Object System.Drawing.Size(90,20)
$snipcheckbox.Checked=$false
$snipcheckbox.Text = "installieren"
$FeaturesGroupBox.Controls.Add($snipcheckbox)

# Label Firmware Download 
$LabelDownloadtab4 = New-Object System.Windows.Forms.Label
$LabelDownloadtab4.Location = New-Object System.Drawing.Size(10,115) 
$LabelDownloadtab4.Size = New-Object System.Drawing.Size(190,37) 
$LabelDownloadtab4.Text = " 5 - IP-Tel. Firmware Download:`r`n          (mit PhoneWhitelist)" 
$FeaturesGroupBox.Controls.Add($LabelDownloadtab4) 

$progressBar = new-object System.Windows.Forms.ProgressBar
$progressBar.Location = new-object System.Drawing.Point(200, 115)
$progressBar.Name = 'progressBar1'
$progressBar.Size = new-object System.Drawing.Size(164, 23)
$progressBar.Value = 0
$progressbar.style = 'blocks'
$progressbar.step = 1
$FeaturesGroupBox.Controls.Add($progressBar) 

# Checkbox Firmware Download
$firmwarecheckbox = New-Object System.Windows.Forms.checkbox
$firmwarecheckbox.Location = New-Object System.Drawing.Size(400,115)
$firmwarecheckbox.Size = New-Object System.Drawing.Size(90,20)
$firmwarecheckbox.Checked=$false
$firmwarecheckbox.Text = "laden"
$FeaturesGroupBox.Controls.Add($firmwarecheckbox)

# Label Windows Updates nur laden
$Label4tab4 = New-Object System.Windows.Forms.Label
$Label4tab4.Location = New-Object System.Drawing.Size(10,30) 
$Label4tab4.Size = New-Object System.Drawing.Size(280,20) 
$Label4tab4.Text = " 1 - Windows Updates nur laden aber nicht installieren:" 
$SettingsGroupBox.Controls.Add($Label4tab4) 

# Checkbox Windows Updates nur laden
$update1checkbox = New-Object System.Windows.Forms.checkbox
$update1checkbox.Location = New-Object System.Drawing.Size(400,30)
$update1checkbox.Size = New-Object System.Drawing.Size(90,20)
$update1checkbox.Checked=$false
$update1checkbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($update1checkbox)

# Label Windows Updates laden und installieren
$Label5tab4 = New-Object System.Windows.Forms.Label
$Label5tab4.Location = New-Object System.Drawing.Size(10,60) 
$Label5tab4.Size = New-Object System.Drawing.Size(280,20) 
$Label5tab4.Text = " 2 - Windows Updates laden und installieren:" 
$SettingsGroupBox.Controls.Add($Label5tab4)

# Checkbox Windows Updates laden und installieren
$update2checkbox = New-Object System.Windows.Forms.checkbox
$update2checkbox.Location = New-Object System.Drawing.Size(400,60)
$update2checkbox.Size = New-Object System.Drawing.Size(90,20)
$update2checkbox.Checked=$false
$update2checkbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($update2checkbox)

# Label Admin Kennwort läuft nicht ab
$Label6tab4 = New-Object System.Windows.Forms.Label
$Label6tab4.Location = New-Object System.Drawing.Size(10,90) 
$Label6tab4.Size = New-Object System.Drawing.Size(280,20) 
$Label6tab4.Text = " 3 - Administrator Passwort läuft nicht ab:" 
$SettingsGroupBox.Controls.Add($Label6tab4) 

# Checkbox Administrator Passwort läuft nicht ab
$adminpwcheckbox = New-Object System.Windows.Forms.checkbox
$adminpwcheckbox.Location = New-Object System.Drawing.Size(400,90)
$adminpwcheckbox.Size = New-Object System.Drawing.Size(90,20)
$adminpwcheckbox.Checked=$false
$adminpwcheckbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($adminpwcheckbox)

# Label Terminalserver: 2. Sitzung erlauben
$Label7tab4 = New-Object System.Windows.Forms.Label
$Label7tab4.Location = New-Object System.Drawing.Size(10,120) 
$Label7tab4.Size = New-Object System.Drawing.Size(280,20) 
$Label7tab4.Text = " 4 - Terminalserver: 2. Sitzung erlauben (RDP):" 
$SettingsGroupBox.Controls.Add($Label7tab4) 

# Checkbox Terminalserver: 2. Sitzung erlauben
$rdppcheckbox = New-Object System.Windows.Forms.checkbox
$rdppcheckbox.Location = New-Object System.Drawing.Size(400,120)
$rdppcheckbox.Size = New-Object System.Drawing.Size(90,20)
$rdppcheckbox.Checked=$false
$rdppcheckbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($rdppcheckbox)

# Label Alle Netphone Dienste in der Firewall auf das Profil Any setzen
$Label8tab4 = New-Object System.Windows.Forms.Label
$Label8tab4.Location = New-Object System.Drawing.Size(10,150) 
$Label8tab4.Size = New-Object System.Drawing.Size(360,20) 
$Label8tab4.Text = " 5 - Alle $($SERVERVERSION) Dienste in der Firewall auf das Profil Any setzen:" 
$SettingsGroupBox.Controls.Add($Label8tab4) 

# Checkbox Alle Netphone Dienste in der Firewall auf das Profil Any setzen
$fwcheckbox = New-Object System.Windows.Forms.checkbox
$fwcheckbox.Location = New-Object System.Drawing.Size(400,150)
$fwcheckbox.Size = New-Object System.Drawing.Size(90,20)
$fwcheckbox.Checked=$false
$fwcheckbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($fwcheckbox)

# Label Aktuelles Netzwerk auf Privat setzen
$Label9tab4 = New-Object System.Windows.Forms.Label
$Label9tab4.Location = New-Object System.Drawing.Size(10,180) 
$Label9tab4.Size = New-Object System.Drawing.Size(280,20) 
$Label9tab4.Text = " 6 - Aktuelles Netzwerk auf Privat setzen:" 
$SettingsGroupBox.Controls.Add($Label9tab4) 

# Checkbox Aktuelles Netzwerk auf Privat setzen
$pnwcheckbox = New-Object System.Windows.Forms.checkbox
$pnwcheckbox.Location = New-Object System.Drawing.Size(400,180)
$pnwcheckbox.Size = New-Object System.Drawing.Size(90,20)
$pnwcheckbox.Checked=$false
$pnwcheckbox.Text = "setzen"
$SettingsGroupBox.Controls.Add($pnwcheckbox)

# Clear Button TAB 4
$ClearButtontab4 = New-Object System.Windows.Forms.Button
$ClearButtontab4.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab4.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab4.Text = "zurücksetzen"
$ClearButtontab4.Add_Click({ClearTab4})
$tabPage4.Controls.Add($ClearButtontab4)

# Hilfe Button TAB 1
$HelpButtontab4 = New-Object System.Windows.Forms.Button
$HelpButtontab4.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab4.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab4.Text = "Hilfe"
$HelpButtontab4.Add_Click({HilfeTab4})
$tabPage4.Controls.Add($HelpButtontab4)

# OK Button TAB 4
$OKButton4 = New-Object System.Windows.Forms.Button
$OKButton4.Location = New-Object System.Drawing.Size(700,410)
$OKButton4.Size = New-Object System.Drawing.Size(75,23)
$OKButton4.Text = "Ok"
$OKButton4.Add_Click({Windowsfeatures})
$tabPage4.Controls.Add($OKButton4)

# Cancel Button TAB 4
$CancelButton4 = New-Object System.Windows.Forms.Button
$CancelButton4.Location = New-Object System.Drawing.Size(780,410)
$CancelButton4.Size = New-Object System.Drawing.Size(75,23)
$CancelButton4.Text = „Ende“
$CancelButton4.DialogResult = „Cancel“
$CancelButton4.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage4.Controls.Add($CancelButton4)

# Ende TAB 4 Windows Features ################################################

# Beginn TAB 5  Systeminfos ##################################################
# Reiter5 anlegen
$tabPage5.TabIndex = 4
$tabPage5.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage5.Size = $System_Drawing_Size
$tabPage5.Text = "Systeminfos"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage5.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage5.Padding = $System_Windows_Forms_Padding
$tabPage5.Name = "tabPage5"
$tabPage5.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage5)

# Systeminfo GroupBox TAB 5
$SystemGroupBox = New-Object System.Windows.Forms.GroupBox
$SystemGroupBox.Location = New-Object System.Drawing.Size(330,15) 
$SystemGroupBox.size = New-Object System.Drawing.Size(540,390) 
$SystemGroupBox.text = "Systeminformationen" 
$tabPage5.Controls.Add($SystemGroupBox)

# Auswahl GroupBox TAB 5
$AuswahlGroupBox = New-Object System.Windows.Forms.GroupBox
$AuswahlGroupBox.Location = New-Object System.Drawing.Size(10,15) 
$AuswahlGroupBox.size = New-Object System.Drawing.Size(308,390) 
$AuswahlGroupBox.text = "Auswahl" 
$tabPage5.Controls.Add($AuswahlGroupBox)

# Ausgabe Textbereich
$outputBoxtab5 = New-Object System.Windows.Forms.TextBox
$outputBoxtab5.Location = New-Object System.Drawing.Size(10,15)
$outputBoxtab5.Size = New-Object System.Drawing.Size(515,360)
$outputBoxtab5.MultiLine = $True
$outputboxtab5.Font = $Font
$outputboxtab5.ForeColor = 'black'
$outputboxtab5.Text = ""
$outputBoxtab5.ScrollBars = "Vertical"
$SystemGroupBox.Controls.Add($outputBoxtab5)

# Label 1 TAB 5
$Label1tab5 = New-Object System.Windows.Forms.Label
$Label1tab5.Location = New-Object System.Drawing.Size(10,25) 
$Label1tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label1tab5.Text = "1 - SQL ABfrage Remote Connector" 
$AuswahlGroupBox.Controls.Add($Label1tab5) 

# Label 2 TAB 5
$Label2tab5 = New-Object System.Windows.Forms.Label
$Label2tab5.Location = New-Object System.Drawing.Size(10,70) 
$Label2tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label2tab5.Text = "2 - PortCheck Remote Connector" 
$AuswahlGroupBox.Controls.Add($Label2tab5) 

# Label 3 TAB 5
$Label3tab5 = New-Object System.Windows.Forms.Label
$Label3tab5.Location = New-Object System.Drawing.Size(10,115) 
$Label3tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label3tab5.Text = "3 - Status der Nebenstellen" 
$AuswahlGroupBox.Controls.Add($Label3tab5) 

# Label 4 TAB 5
$Label4tab5 = New-Object System.Windows.Forms.Label
$Label4tab5.Location = New-Object System.Drawing.Size(10,160) 
$Label4tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label4tab5.Text = "4 - Status Reg Keys" 
$AuswahlGroupBox.Controls.Add($Label4tab5) 

# Label 5 TAB 5
$Label5tab5 = New-Object System.Windows.Forms.Label
$Label5tab5.Location = New-Object System.Drawing.Size(10,205) 
$Label5tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label5tab5.Text = "5 - Aktive Userliste (IP,MAC,Version)" 
$AuswahlGroupBox.Controls.Add($Label5tab5) 

# Label 6 TAB 5
$Label6tab5 = New-Object System.Windows.Forms.Label
$Label6tab5.Location = New-Object System.Drawing.Size(10,250) 
$Label6tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label6tab5.Text = "6 - Windows Lizenzkey anzeigen" 
$AuswahlGroupBox.Controls.Add($Label6tab5) 

# Label 7 TAB 5
$Label7tab5 = New-Object System.Windows.Forms.Label
$Label7tab5.Location = New-Object System.Drawing.Size(10,295) 
$Label7tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label7tab5.Text = "7 - SwyxWare Version anzeigen" 
$AuswahlGroupBox.Controls.Add($Label7tab5) 

# Label 8 TAB 5
$Label8tab5 = New-Object System.Windows.Forms.Label
$Label8tab5.Location = New-Object System.Drawing.Size(10,340) 
$Label8tab5.Size = New-Object System.Drawing.Size(200,25) 
$Label8tab5.Text = "8 - Aktuellen Lizenzstatus anzeigen" 
$AuswahlGroupBox.Controls.Add($Label8tab5) 

# Button 1 TAB 5
$Button1tab5 = New-Object System.Windows.Forms.Button
$Button1tab5.Location = New-Object System.Drawing.Size(225,25)
$Button1tab5.Size = New-Object System.Drawing.Size(70,20)
$Button1tab5.Text = "anzeigen"
$Button1tab5.Add_Click({SQLAbfrageRC})
$AuswahlGroupBox.Controls.Add($Button1tab5)

# Hilfe Button TAB 5
$HelpButtontab5 = New-Object System.Windows.Forms.Button
$HelpButtontab5.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab5.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab5.Text = "Hilfe"
$HelpButtontab5.Add_Click({HilfeTab5})
$tabPage5.Controls.Add($HelpButtontab5)

# Button 2 TAB 5
$Button2tab5 = New-Object System.Windows.Forms.Button
$Button2tab5.Location = New-Object System.Drawing.Size(225,70)
$Button2tab5.Size = New-Object System.Drawing.Size(70,20)
$Button2tab5.Text = "anzeigen"
$Button2tab5.Add_Click({Portcheck})
$AuswahlGroupBox.Controls.Add($Button2tab5)

# Button 3 TAB 5
$Button3tab5 = New-Object System.Windows.Forms.Button
$Button3tab5.Location = New-Object System.Drawing.Size(225,115)
$Button3tab5.Size = New-Object System.Drawing.Size(70,20)
$Button3tab5.Text = "anzeigen"
$Button3tab5.Add_Click({Userliste})
$AuswahlGroupBox.Controls.Add($Button3tab5)

# Button 4 TAB 5
$Button4tab5 = New-Object System.Windows.Forms.Button
$Button4tab5.Location = New-Object System.Drawing.Size(225,160)
$Button4tab5.Size = New-Object System.Drawing.Size(70,20)
$Button4tab5.Text = "anzeigen"
$Button4tab5.Add_Click({SysStatus})
$AuswahlGroupBox.Controls.Add($Button4tab5)

# Button 5 TAB 5
$Button5tab5 = New-Object System.Windows.Forms.Button
$Button5tab5.Location = New-Object System.Drawing.Size(225,205)
$Button5tab5.Size = New-Object System.Drawing.Size(70,20)
$Button5tab5.Text = "anzeigen"
$Button5tab5.Add_Click({StatusNST})
$AuswahlGroupBox.Controls.Add($Button5tab5)

# Button 6 TAB 5
$Button6tab5 = New-Object System.Windows.Forms.Button
$Button6tab5.Location = New-Object System.Drawing.Size(225,250)
$Button6tab5.Size = New-Object System.Drawing.Size(70,20)
$Button6tab5.Text = "anzeigen"
$Button6tab5.Add_Click({Lizenzkey})
$AuswahlGroupBox.Controls.Add($Button6tab5)

# Button 7 TAB 5
$Button7tab5 = New-Object System.Windows.Forms.Button
$Button7tab5.Location = New-Object System.Drawing.Size(225,295)
$Button7tab5.Size = New-Object System.Drawing.Size(70,20)
$Button7tab5.Text = "anzeigen"
$Button7tab5.Add_Click({Swyxwareversion})
$AuswahlGroupBox.Controls.Add($Button7tab5)

# Button 8 TAB 5
$Button8tab5 = New-Object System.Windows.Forms.Button
$Button8tab5.Location = New-Object System.Drawing.Size(225,340)
$Button8tab5.Size = New-Object System.Drawing.Size(70,20)
$Button8tab5.Text = "anzeigen"
$Button8tab5.Add_Click({Lizenzstatus})
$AuswahlGroupBox.Controls.Add($Button8tab5)

#$Sysinfo = New-Object System.Windows.Forms.Form
#$Sysinfo.StartPosition = "CenterScreen"
#$Sysinfo.text = "Ausgabe der Systeminformationen"
#$Sysinfo.Size = New-Object System.Drawing.Size(1000,800)
#$SysinfoButton = New-Object System.Windows.Forms.Button
#$SysinfoButton.Location = New-Object System.Drawing.Size(900,710)
#$SysinfoButton.Size = New-Object System.Drawing.Size(75,25)
#$SysinfoButton.Text = "zurück"
#$SysinfoButton.Add_Click({$Sysinfo.Close()})
#$Sysinfo.Controls.Add($SysinfoButton)
# Ausgabe Systeminformationen Textbereich
#$sysinfoBox = New-Object System.Windows.Forms.TextBox
#$sysinfoBox.Location = New-Object System.Drawing.Size(10,10)
#$sysinfoBox.Size = New-Object System.Drawing.Size(970,690)
#$sysinfoBox.MultiLine = $True
#$sysinfoBox.Text = "Hier stehen die Log Informationen."
#$sysinfoBox.ScrollBars = "Vertical"
#$Sysinfo.Controls.Add($sysinfoBox)

# Reiter 5 mit leben füllen
# OK Button TAB 5
$OKButton5 = New-Object System.Windows.Forms.Button
$OKButton5.Location = New-Object System.Drawing.Size(700,410)
$OKButton5.Size = New-Object System.Drawing.Size(75,23)
$OKButton5.Text = "löschen"
$OKButton5.Add_Click({$outputboxtab5.Text = ""})
$tabPage5.Controls.Add($OKButton5)

# Cancel Button TAB 5
$CancelButton5 = New-Object System.Windows.Forms.Button
$CancelButton5.Location = New-Object System.Drawing.Size(780,410)
$CancelButton5.Size = New-Object System.Drawing.Size(75,23)
$CancelButton5.Text = „Ende“
$CancelButton5.DialogResult = „Cancel“
$CancelButton5.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage5.Controls.Add($CancelButton5)

# Ende TAB 5  Systeminfos ###################################################

# Beginn TAB 6 Namenstatsten ################################################
# Reiter6 anlegen
$tabPage6.TabIndex = 5
$tabPage6.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage6.Size = $System_Drawing_Size
$tabPage6.Text = "Namenstasten"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage6.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage6.Padding = $System_Windows_Forms_Padding
$tabPage6.Name = "tabPage6"
$tabPage6.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage6)

# Reiter 6 mit leben füllen
# Combobox TAB 6 Label   
$Labeltab6 = New-Object System.Windows.Forms.Label
$Labeltab6.Location = New-Object System.Drawing.Size(10,10) 
$Labeltab6.Size = New-Object System.Drawing.Size(280,20) 
$Labeltab6.Text = "Bitte eine Gruppe auswählen" 
$tabPage6.Controls.Add($Labeltab6)

# Combobox TAB 6 Gruppen  
$Comboboxtab6 = New-Object System.Windows.Forms.Combobox 
$Comboboxtab6.Location = New-Object System.Drawing.Size(10,32) 
$Comboboxtab6.Size = New-Object System.Drawing.Size(260,20) 
#[void] $Combobox.Items.Add(" ")
[void] $Comboboxtab6.Items.Add("Konfig-Gruppe")
[void] $Comboboxtab6.Items.Add("Vertrieb")
[void] $Comboboxtab6.Items.Add("Verkauf")
[void] $Comboboxtab6.Items.Add("Jeder")
$Comboboxtab6.SelectedIndex = 0
$Comboboxtab6.Height = 70
$Comboboxtab6.add_DropDownClosed({$statusBar.Text = "Auswahl: "+$Comboboxtab6.SelectedItem +" " +$TextBox.Text})
$Comboboxtab6.add_DropDownClosed({$combobox.SelectedItem = $comboboxtab6.SelectedItem})
$Comboboxtab6.add_DropDownClosed({$comboboxtab2.SelectedItem = $comboboxtab6.SelectedItem})
$Comboboxtab6.add_DropDownClosed({$comboboxtab3.SelectedItem = $comboboxtab6.SelectedItem})
$Comboboxtab6.add_DropDownClosed({$comboboxtab9.SelectedItem = $comboboxtab6.SelectedItem})
$Comboboxtab6.TabIndex = 0
$tabPage6.Controls.Add($Comboboxtab6)
#$form.Topmost = $True

# Namenstasten Optionen GroupBox TAB 3
$NamenGroupBoxtab6 = New-Object System.Windows.Forms.GroupBox
$NamenGroupBoxtab6.Location = New-Object System.Drawing.Size(305,15) 
$NamenGroupBoxtab6.size = New-Object System.Drawing.Size(565,390) 
$NamenGroupBoxtab6.text = "Namenstasten" 
$tabPage6.Controls.Add($NamenGroupBoxtab6)

# Label Namenstasten eines Users auf alle User der Konfig-Gruppe schreiben
$Label1tab6 = New-Object System.Windows.Forms.Label
$Label1tab6.Location = New-Object System.Drawing.Size(10,25) 
#$Label1tab6.BackColor = "ControlDark"
$Label1tab6.Size = New-Object System.Drawing.Size(415,20) 
$Label1tab6.Text = "1 - Namenstasten eines Users auf alle User der Gruppe schreiben:   Muster User?" 
$NamenGroupBoxtab6.Controls.Add($Label1tab6) 

# Label Namenstasten eines Users auf alle User der Konfig-Gruppe schreiben
$Label1M1tab6 = New-Object System.Windows.Forms.Label
$Label1M1tab6.Location = New-Object System.Drawing.Size(10,45) 
#$Label1.1tab6.BackColor = "ControlDark"
$Label1M1tab6.Size = New-Object System.Drawing.Size(260,40) 
$Label1M1tab6.Text = "    Bitte die Rufnummer des Musteruser eingeben:" 
$NamenGroupBoxtab6.Controls.Add($Label1M1tab6) 

# Label User untereinander Namenstasten sortiert nach Name/Nummer schreiben. (Nachname, Vorname)
$Label2tab6 = New-Object System.Windows.Forms.Label
$Label2tab6.Location = New-Object System.Drawing.Size(10,85) 
$Label2tab6.Size = New-Object System.Drawing.Size(400,40) 
$Label2tab6.Text = "2 - User der Gruppe untereinander Namenstasten sortiert nach`r`n     Name/Nummer schreiben. (Nachname, Vorname):" 
$NamenGroupBoxtab6.Controls.Add($Label2tab6) 

# Label User untereinander Namenstasten sortiert nach Name/Nummer schreiben. (Nachname, V.)
$Label3tab6 = New-Object System.Windows.Forms.Label
$Label3tab6.Location = New-Object System.Drawing.Size(10,170) 
$Label3tab6.Size = New-Object System.Drawing.Size(400,40) 
$Label3tab6.Text = "3 - User der Gruppe untereinander Namenstasten sortiert nach`r`n     Name/Nummer schreiben. (Nachname, V.):" 
$NamenGroupBoxtab6.Controls.Add($Label3tab6) 

# Label Erzeugt User '1Dummy' (Nr.99), schreibt ihm Namenstasten sortiert nach Name/Nummer für alle User
$Label4tab6 = New-Object System.Windows.Forms.Label
$Label4tab6.Location = New-Object System.Drawing.Size(10,260) 
$Label4tab6.Size = New-Object System.Drawing.Size(400,40) 
$Label4tab6.Text = "4 - Erzeugt User '1Dummy' (Nr.99), schreibt ihm Namenstasten sortiert nach`r`n     Name/Nummer für alle User. (Nachname, V.):" 
$NamenGroupBoxtab6.Controls.Add($Label4tab6) 

# Label  Allen Usern der Konfig-Gruppe die Namenstasten löschen!
$Label5tab6 = New-Object System.Windows.Forms.Label
$Label5tab6.Location = New-Object System.Drawing.Size(10,345) 
$Label5tab6.Size = New-Object System.Drawing.Size(400,40)
$Label5tab6.ForeColor = “Magenta”
$Label5tab6.Text = "5 - Allen Usern der Gruppe die Namenstasten löschen!:" 
$NamenGroupBoxtab6.Controls.Add($Label5tab6) 

# Checkbox  Namenstasten eines Users auf alle User der Gruppe schreiben 
$1oncheckboxtab6 = New-Object System.Windows.Forms.checkbox
$1oncheckboxtab6.Location = New-Object System.Drawing.Size(480,45)
$1oncheckboxtab6.Size = New-Object System.Drawing.Size(80,20)
$1oncheckboxtab6.Checked=$false
$1oncheckboxtab6.Text = "schreiben"
$NamenGroupBoxtab6.Controls.Add($1oncheckboxtab6)

# Eingabe MusterUser für Tasten:
$CopyNTListenBox = New-Object System.Windows.Forms.TextBox
$CopyNTListenBox.Location = New-Object System.Drawing.Size(300,45)
$CopyNTListenBox.Size = New-Object System.Drawing.Size(30,20)
$CopyNTListenBox.Text = "99"
$NamenGroupBoxtab6.Controls.Add($CopyNTListenBox)

# Checkbox  Name (Nachname, Vorname)
$2namcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$2namcheckboxtab6.Location = New-Object System.Drawing.Size(180,130)
$2namcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$2namcheckboxtab6.Checked=$false
$2namcheckboxtab6.Text = "nach Name"
$NamenGroupBoxtab6.Controls.Add($2namcheckboxtab6)

# Checkbox  Name  (Nachname, Vorname)
$2numcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$2numcheckboxtab6.Location = New-Object System.Drawing.Size(300,130)
$2numcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$2numcheckboxtab6.Checked=$false
$2numcheckboxtab6.Text = "Nach Nummer"
$NamenGroupBoxtab6.Controls.Add($2numcheckboxtab6)

# Checkbox User der Gruppe untereinander Namenstasten sortiert nach Name/Nummer  (Nachname, Vorname)
$2oncheckboxtab6 = New-Object System.Windows.Forms.checkbox
$2oncheckboxtab6.Location = New-Object System.Drawing.Size(480,130)
$2oncheckboxtab6.Size = New-Object System.Drawing.Size(80,20)
$2oncheckboxtab6.Checked=$false
$2oncheckboxtab6.Text = "schreiben"
$NamenGroupBoxtab6.Controls.Add($2oncheckboxtab6)

# Checkbox User der Gruppe untereinander Namenstasten sortiert nach nach Name/Nummer (Nachname, V.)
$3oncheckboxtab6 = New-Object System.Windows.Forms.checkbox
$3oncheckboxtab6.Location = New-Object System.Drawing.Size(480,220)
$3oncheckboxtab6.Size = New-Object System.Drawing.Size(80,20)
$3oncheckboxtab6.Checked=$false
$3oncheckboxtab6.Text = "schreiben"
$NamenGroupBoxtab6.Controls.Add($3oncheckboxtab6)

# Checkbox  Name (Nachname, Vorname)
$3namcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$3namcheckboxtab6.Location = New-Object System.Drawing.Size(180,220)
$3namcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$3namcheckboxtab6.Checked=$false
$3namcheckboxtab6.Text = "nach Name"
$NamenGroupBoxtab6.Controls.Add($3namcheckboxtab6)

# Checkbox  Name  (Nachname, Vorname)
$3numcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$3numcheckboxtab6.Location = New-Object System.Drawing.Size(300,220)
$3numcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$3numcheckboxtab6.Checked=$false
$3numcheckboxtab6.Text = "Nach Nummer"
$NamenGroupBoxtab6.Controls.Add($3numcheckboxtab6)

# Checkbox Erzeugt User '1Dummy' (Nr.99), schreibt ihm Namenstasten sortiert nach Name/Nummer für alle User
$4oncheckboxtab6 = New-Object System.Windows.Forms.checkbox
$4oncheckboxtab6.Location = New-Object System.Drawing.Size(480,300)
$4oncheckboxtab6.Size = New-Object System.Drawing.Size(80,20)
$4oncheckboxtab6.Checked=$false
$4oncheckboxtab6.Text = "schreiben"
$NamenGroupBoxtab6.Controls.Add($4oncheckboxtab6)

# Checkbox  Name (Nachname, Vorname)
$4namcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$4namcheckboxtab6.Location = New-Object System.Drawing.Size(180,300)
$4namcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$4namcheckboxtab6.Checked=$false
$4namcheckboxtab6.Text = "nach Name"
$NamenGroupBoxtab6.Controls.Add($4namcheckboxtab6)

# Checkbox  Name  (Nachname, Vorname)
$4numcheckboxtab6 = New-Object System.Windows.Forms.checkbox
$4numcheckboxtab6.Location = New-Object System.Drawing.Size(300,300)
$4numcheckboxtab6.Size = New-Object System.Drawing.Size(100,20)
$4numcheckboxtab6.Checked=$false
$4numcheckboxtab6.Text = "Nach Nummer"
$NamenGroupBoxtab6.Controls.Add($4numcheckboxtab6)

# Checkbox ZAllen Usern der Gruppe die Namenstasten löschen!
$5oncheckboxtab6 = New-Object System.Windows.Forms.checkbox
$5oncheckboxtab6.Location = New-Object System.Drawing.Size(480,345)
$5oncheckboxtab6.Size = New-Object System.Drawing.Size(80,20)
$5oncheckboxtab6.Checked=$false
$5oncheckboxtab6.ForeColor = “Magenta”
$5oncheckboxtab6.Text = "löschen"
$NamenGroupBoxtab6.Controls.Add($5oncheckboxtab6)

# Clear Button TAB 6
$ClearButtontab6 = New-Object System.Windows.Forms.Button
$ClearButtontab6.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab6.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab6.Text = "zurücksetzen"
$ClearButtontab6.Add_Click({ClearTab6})
$tabPage6.Controls.Add($ClearButtontab6)

# Hilfe Button TAB 1
$HelpButtontab6 = New-Object System.Windows.Forms.Button
$HelpButtontab6.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab6.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab6.Text = "Hilfe"
$HelpButtontab6.Add_Click({HilfeTab6})
$tabPage6.Controls.Add($HelpButtontab6)

# OK Button TAB 6
$OKButton6 = New-Object System.Windows.Forms.Button
$OKButton6.Location = New-Object System.Drawing.Size(700,410)
$OKButton6.Size = New-Object System.Drawing.Size(75,23)
$OKButton6.Text = "Ok"
#$OKButton6.Name = "OK"
#$OKButton6.DialogResult = "OK"
$OKButton6.Add_Click({Namenstasten})
$tabPage6.Controls.Add($OKButton6)

# Cancel Button TAB 6
$CancelButton6 = New-Object System.Windows.Forms.Button
$CancelButton6.Location = New-Object System.Drawing.Size(780,410)
$CancelButton6.Size = New-Object System.Drawing.Size(75,23)
$CancelButton6.Text = „Ende“
$CancelButton6.DialogResult = „Cancel“
$CancelButton6.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage6.Controls.Add($CancelButton6)

# Ende TAB 6 Namenstasten ###################################################

# Beginn TAB 7 Reg Keys #####################################################
# Reiter7 anlegen
$tabPage7.TabIndex = 5
$tabPage7.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage7.Size = $System_Drawing_Size
$tabPage7.Text = "Reg Keys"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage7.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage7.Padding = $System_Windows_Forms_Padding
$tabPage7.Name = "tabPage7"
$tabPage7.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage7)

# RegKey GroupBox1 TAB 7
$ClientGroupBoxtab7 = New-Object System.Windows.Forms.GroupBox
$ClientGroupBoxtab7.Location = New-Object System.Drawing.Size(10,15) 
$ClientGroupBoxtab7.size = New-Object System.Drawing.Size(840,300) 
$ClientGroupBoxtab7.text = "$($SERVERVERSION) Reg Keys" 
$tabPage7.Controls.Add($ClientGroupBoxtab7)

# Label für Pickup bei aktivem Gespräch und gesperrtem Zweitanruf
$Label1tab7 = New-Object System.Windows.Forms.Label
$Label1tab7.Location = New-Object System.Drawing.Size(10,20) 
$Label1tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label1tab7.Text = " 1 - Pickup bei aktivem Gespräch und gesperrtem Zweitanruf:" 
$ClientGroupBoxtab7.Controls.Add($Label1tab7) 

# Label für Gruppenruf bei nicht stören/abwesend
$Label2tab7 = New-Object System.Windows.Forms.Label
$Label2tab7.Location = New-Object System.Drawing.Size(10,50) 
$Label2tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label2tab7.Text = " 2 - Gruppenruf bei nicht stören/abwesend:" 
$ClientGroupBoxtab7.Controls.Add($Label2tab7) 

# Label für Gruppenruf in Anruferliste
$Label3tab7 = New-Object System.Windows.Forms.Label
$Label3tab7.Location = New-Object System.Drawing.Size(10,80) 
$Label3tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label3tab7.Text = " 3 - Gruppenruf in Anruferliste:" 
$ClientGroupBoxtab7.Controls.Add($Label3tab7) 

# Label für Media Bridge
$Label4tab7 = New-Object System.Windows.Forms.Label
$Label4tab7.Location = New-Object System.Drawing.Size(10,110) 
$Label4tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label4tab7.Text = " 4 - Media Bridge:" 
$ClientGroupBoxtab7.Controls.Add($Label4tab7) 

# Label Zeit für Wiederanruf einstellen
$Label5tab7 = New-Object System.Windows.Forms.Label
$Label5tab7.Location = New-Object System.Drawing.Size(10,140) 
$Label5tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label5tab7.Text = " 5 - Zeit für Wiederanruf in Sekunden einstellen:" 
$ClientGroupBoxtab7.Controls.Add($Label5tab7) 

# Label NTP Server für IP Telefone: ptbtime1.ptb.de oder eigene Eingabe
$Label6tab7 = New-Object System.Windows.Forms.Label
$Label6tab7.Location = New-Object System.Drawing.Size(10,170) 
$Label6tab7.Size = New-Object System.Drawing.Size(380,20) 
$Label6tab7.Text = " 6 - NTP Server für IP Telefone: ptbtime1.ptb.de oder eigene Eingabe:" 
$ClientGroupBoxtab7.Controls.Add($Label6tab7) 

# Label Bei Problemen mit Voicemail Fernabfrage auch auf (X-IpPbx… Headerzeilen) schauen
$Label7tab7 = New-Object System.Windows.Forms.Label
$Label7tab7.Location = New-Object System.Drawing.Size(10,200) 
$Label7tab7.Size = New-Object System.Drawing.Size(480,20) 
$Label7tab7.Text = " 7 - Bei Problemen mit Voicemail Fernabfrage auch auf (X-IpPbx… Headerzeilen) schauen:" 
$ClientGroupBoxtab7.Controls.Add($Label7tab7) 

# Label Login bei IMAP4 Abfrage UTF-8(bei Passwörtern mit Umlauten)
$Label8tab7 = New-Object System.Windows.Forms.Label
$Label8tab7.Location = New-Object System.Drawing.Size(10,230) 
$Label8tab7.Size = New-Object System.Drawing.Size(480,20) 
$Label8tab7.Text = " 8 - Login bei IMAP4 Abfrage UTF-8(bei Passwörtern mit Umlauten):" 
$ClientGroupBoxtab7.Controls.Add($Label8tab7)

# Label Mediabridge neustarten
$Label9tab7 = New-Object System.Windows.Forms.Label
$Label9tab7.Location = New-Object System.Drawing.Size(10,260) 
$Label9tab7.Size = New-Object System.Drawing.Size(480,20) 
$Label9tab7.Text = " 9 - IpPbx Serverdienste neu starten? (Bei Änderungen an der Mediabridge nötig):" 
$ClientGroupBoxtab7.Controls.Add($Label9tab7)

# Checkbox Pickup bei aktivem Gespräch und gesperrtem Zweitanruf ein 
$1oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$1oncheckboxtab7.Location = New-Object System.Drawing.Size(600,18)
$1oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$1oncheckboxtab7.Checked=$false
$1oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($1oncheckboxtab7)

# Checkbox Pickup bei aktivem Gespräch und gesperrtem Zweitanrufaus 
$1offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$1offcheckboxtab7.Location = New-Object System.Drawing.Size(650,18)
$1offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$1offcheckboxtab7.Checked=$false
$1offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($1offcheckboxtab7)

# Checkbox Gruppenruf bei nicht stören/abwesend ein 
$2oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$2oncheckboxtab7.Location = New-Object System.Drawing.Size(600,48)
$2oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$2oncheckboxtab7.Checked=$false
$2oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($2oncheckboxtab7)

# Checkbox Gruppenruf bei nicht stören/abwesend  aus 
$2offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$2offcheckboxtab7.Location = New-Object System.Drawing.Size(650,48)
$2offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$2offcheckboxtab7.Checked=$false
$2offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($2offcheckboxtab7)

# Checkbox Gruppenruf in Anruferliste ein 
$3oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$3oncheckboxtab7.Location = New-Object System.Drawing.Size(600,78)
$3oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$3oncheckboxtab7.Checked=$false
$3oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($3oncheckboxtab7)

# Checkbox Gruppenruf in Anruferliste  aus 
$3offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$3offcheckboxtab7.Location = New-Object System.Drawing.Size(650,78)
$3offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$3offcheckboxtab7.Checked=$false
$3offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($3offcheckboxtab7)

# Checkbox Media Bridge  ein 
$4oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$4oncheckboxtab7.Location = New-Object System.Drawing.Size(600,108)
$4oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$4oncheckboxtab7.Checked=$false
$4oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($4oncheckboxtab7)

# Checkbox Media Bridge aus 
$4offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$4offcheckboxtab7.Location = New-Object System.Drawing.Size(650,108)
$4offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$4offcheckboxtab7.Checked=$false
$4offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($4offcheckboxtab7)

# Checkbox Zeit für Wiederanruf einstellen ein
$5oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$5oncheckboxtab7.Location = New-Object System.Drawing.Size(600,138)
$5oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$5oncheckboxtab7.Checked=$false
$5oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($5oncheckboxtab7)

# Eingabe NTP Server für IP Telefone:
$ZeitWAListenBox = New-Object System.Windows.Forms.TextBox
$ZeitWAListenBox.Location = New-Object System.Drawing.Size(440,138)
$ZeitWAListenBox.Size = New-Object System.Drawing.Size(30,20)
$ZeitWAListenBox.Text = "45"
$ClientGroupBoxtab7.Controls.Add($ZeitWAListenBox)

# Checkbox Zeit für Wiederanruf einstellen aus
$5offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$5offcheckboxtab7.Location = New-Object System.Drawing.Size(650,138)
$5offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$5offcheckboxtab7.Checked=$false
$5offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($5offcheckboxtab7)

# Eingabe NTP Server für IP Telefone:
$NtpListenBox = New-Object System.Windows.Forms.TextBox
$NtpListenBox.Location = New-Object System.Drawing.Size(440,168)
$NtpListenBox.Size = New-Object System.Drawing.Size(120,20)
$NtpListenBox.Text = "ptbtime1.ptb.de"
$ClientGroupBoxtab7.Controls.Add($NtpListenBox)

# Checkbox NTP Server für IP Telefone: ptbtime1.ptb.de oder eigene Eingabe ein
$6oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$6oncheckboxtab7.Location = New-Object System.Drawing.Size(600,168)
$6oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$6oncheckboxtab7.Checked=$false
$6oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($6oncheckboxtab7)

# Checkbox NTP Server für IP Telefone: ptbtime1.ptb.de oder eigene Eingabe aus 
$6offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$6offcheckboxtab7.Location = New-Object System.Drawing.Size(650,168)
$6offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$6offcheckboxtab7.Checked=$false
$6offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($6offcheckboxtab7)

# Checkbox Bei Problemen mit Voicemail Fernabfrage auch auf (X-IpPbx… Headerzeilen) schauen ein
$7oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$7oncheckboxtab7.Location = New-Object System.Drawing.Size(600,198)
$7oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$7oncheckboxtab7.Checked=$false
$7oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($7oncheckboxtab7)

# Checkbox Bei Problemen mit Voicemail Fernabfrage auch auf (X-IpPbx… Headerzeilen) schauen aus
$7offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$7offcheckboxtab7.Location = New-Object System.Drawing.Size(650,198)
$7offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$7offcheckboxtab7.Checked=$false
$7offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($7offcheckboxtab7)

# Checkbox Login bei IMAP4 Abfrage UTF-8(bei Passwörtern mit Umlauten) ein
$8oncheckboxtab7 = New-Object System.Windows.Forms.checkbox
$8oncheckboxtab7.Location = New-Object System.Drawing.Size(600,228)
$8oncheckboxtab7.Size = New-Object System.Drawing.Size(40,20)
$8oncheckboxtab7.Checked=$false
$8oncheckboxtab7.Text = "ein"
$ClientGroupBoxtab7.Controls.Add($8oncheckboxtab7)

# Checkbox Login bei IMAP4 Abfrage UTF-8(bei Passwörtern mit Umlauten) aus
$8offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$8offcheckboxtab7.Location = New-Object System.Drawing.Size(650,228)
$8offcheckboxtab7.Size = New-Object System.Drawing.Size(50,20)
$8offcheckboxtab7.Checked=$false
$8offcheckboxtab7.Text = "aus"
$ClientGroupBoxtab7.Controls.Add($8offcheckboxtab7)

# Checkbox Login bei IMAP4 Abfrage UTF-8(bei Passwörtern mit Umlauten) aus
$9offcheckboxtab7 = New-Object System.Windows.Forms.checkbox
$9offcheckboxtab7.Location = New-Object System.Drawing.Size(600,258)
$9offcheckboxtab7.Size = New-Object System.Drawing.Size(100,20)
$9offcheckboxtab7.Checked=$false
$9offcheckboxtab7.Text = "Neustarten"
$ClientGroupBoxtab7.Controls.Add($9offcheckboxtab7)

# Clear Button TAB 7
$ClearButtontab7 = New-Object System.Windows.Forms.Button
$ClearButtontab7.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab7.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab7.Text = "zurücksetzen"
$ClearButtontab7.Add_Click({ClearTab7})
$tabPage7.Controls.Add($ClearButtontab7)

# Hilfe Button TAB 7
$HelpButtontab7 = New-Object System.Windows.Forms.Button
$HelpButtontab7.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab7.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab7.Text = "Hilfe"
$HelpButtontab7.Add_Click({HilfeTab7})
$tabPage7.Controls.Add($HelpButtontab7)

# OK Button TAB 7
$OKButton7 = New-Object System.Windows.Forms.Button
$OKButton7.Location = New-Object System.Drawing.Size(700,410)
$OKButton7.Size = New-Object System.Drawing.Size(75,23)
$OKButton7.Text = "Ok"
$OKButton7.Add_Click({RegKeys})
$tabPage7.Controls.Add($OKButton7)

# Cancel Button TAB 7
$CancelButton7 = New-Object System.Windows.Forms.Button
$CancelButton7.Location = New-Object System.Drawing.Size(780,410)
$CancelButton7.Size = New-Object System.Drawing.Size(75,23)
$CancelButton7.Text = „Ende“
$CancelButton7.DialogResult = „Cancel“
$CancelButton7.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage7.Controls.Add($CancelButton7)

# Ende TAB 7 Reg Keys #####################################################

# Beginn TAB 8 Backup / Restore ###########################################
# Reiter8 anlegen
$tabPage8.TabIndex = 5
$tabPage8.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage8.Size = $System_Drawing_Size
$tabPage8.Text = "Backup Restore"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage8.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage8.Padding = $System_Windows_Forms_Padding
$tabPage8.Name = "tabPage8"
$tabPage8.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage8)

# Backup GroupBox1 TAB 8
$ClientGroupBoxtab8 = New-Object System.Windows.Forms.GroupBox
$ClientGroupBoxtab8.Location = New-Object System.Drawing.Size(10,15) 
$ClientGroupBoxtab8.size = New-Object System.Drawing.Size(420,300) 
$ClientGroupBoxtab8.text = "Backup" 
$tabPage8.Controls.Add($ClientGroupBoxtab8)

# Restore GroupBox1 TAB 8
$Client2GroupBoxtab8 = New-Object System.Windows.Forms.GroupBox
$Client2GroupBoxtab8.Location = New-Object System.Drawing.Size(440,15) 
$Client2GroupBoxtab8.size = New-Object System.Drawing.Size(420,300) 
$Client2GroupBoxtab8.text = "Restore" 
$tabPage8.Controls.Add($Client2GroupBoxtab8)

# Label Backup
$Label1tab8 = New-Object System.Windows.Forms.Label
$Label1tab8.Location = New-Object System.Drawing.Size(10,20) 
$Label1tab8.Size = New-Object System.Drawing.Size(175,180)
#$Label1tab8.BackColor = "ControlDark" 
$Label1tab8.Text = " Schnelles Datenbank Backup`r`n in das Verzeichnis:`r`n `r`n `r`n C:\ProgramData\$BACKUPPATH\Backup:`r`n `r`n`r`n `r`n C:\Backup\Backups\OpenAdmin:`r`n `r`n`r`n `r`n D:\Backup\OpenAdmin (SD)" 
$ClientGroupBoxtab8.Controls.Add($Label1tab8) 

# Checkbox  Backup Verzeichnis C:\ProgramData\$BACKUPPATH\Backup
$1oncheckboxtab8 = New-Object System.Windows.Forms.RadioButton
$1oncheckboxtab8.Location = New-Object System.Drawing.Size(190,68)
$1oncheckboxtab8.Size = New-Object System.Drawing.Size(80,20)
$1oncheckboxtab8.Checked=$false
$1oncheckboxtab8.Text = "Auswahl"
$ClientGroupBoxtab8.Controls.Add($1oncheckboxtab8)

# Checkbox  Backup Verzeichnis C:\Backup..... 
$2oncheckboxtab8 = New-Object System.Windows.Forms.RadioButton
$2oncheckboxtab8.Location = New-Object System.Drawing.Size(190,118)
$2oncheckboxtab8.Size = New-Object System.Drawing.Size(80,20)
$2oncheckboxtab8.Checked=$false
$2oncheckboxtab8.Text = "Auswahl"
$ClientGroupBoxtab8.Controls.Add($2oncheckboxtab8)

# Checkbox  Backup Verzeichnis D:\Backup..... 
$3oncheckboxtab8 = New-Object System.Windows.Forms.RadioButton
$3oncheckboxtab8.Location = New-Object System.Drawing.Size(190,168)
$3oncheckboxtab8.Size = New-Object System.Drawing.Size(80,20)
$3oncheckboxtab8.Checked=$false
$3oncheckboxtab8.Text = "Auswahl"
$ClientGroupBoxtab8.Controls.Add($3oncheckboxtab8)

# Backup1 Button TAB 8
$Backup1Button8 = New-Object System.Windows.Forms.Button
$Backup1Button8.Location = New-Object System.Drawing.Size(310,118)
$Backup1Button8.Size = New-Object System.Drawing.Size(75,23)
$Backup1Button8.Text = "Backup"
$Backup1Button8.Add_Click({Backup})
$ClientGroupBoxtab8.Controls.Add($Backup1Button8)

# Backup öffnen Button TAB 8
$Backup2Button8 = New-Object System.Windows.Forms.Button
$Backup2Button8.Location = New-Object System.Drawing.Size(120,250)
$Backup2Button8.Size = New-Object System.Drawing.Size(200,23)
$Backup2Button8.Text = "Backup Verzeichnis öffnen"
$Backup2Button8.Add_Click({ if ($1oncheckboxtab8.Checked) {explorer.exe C:\ProgramData\$BACKUPPATH\Backup}
							if ($2oncheckboxtab8.Checked) {explorer.exe C:\Backup\Backups\OpenAdmin}
							if ($3oncheckboxtab8.Checked) 	{
																# Prüfe Laufwerk D:
																$SD = (Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DeviceID -eq "D:"})
																# Wenn $LW ein Wechseldatenträger ist erzeuge ein Backup
																if (!($SD.DriveType -eq 2))
																	{	
																		[System.Windows.Forms.MessageBox]::Show("Laufwerk D: ist keine SD-Karte. Abbruch!","Fehler!")
																		return					
																	}
																explorer.exe D:\Backup\OpenAdmin
															}
							if ((!($1oncheckboxtab8.Checked)) -and (!($2oncheckboxtab8.Checked)) -and (!($3oncheckboxtab8.Checked))){explorer.exe C:\ProgramData\$BACKUPPATH\Backup}
							})
$ClientGroupBoxtab8.Controls.Add($Backup2Button8)

# Label Restore
$Label2tab8 = New-Object System.Windows.Forms.Label
$Label2tab8.Location = New-Object System.Drawing.Size(10,20) 
$Label2tab8.Size = New-Object System.Drawing.Size(380,20) 
$Label2tab8.Text = " Datenbank Restore:" 
$Client2GroupBoxtab8.Controls.Add($Label2tab8) 

# Eingabe Resore Dat in Groupbox TAB 8
$ListenBox1tab8 = New-Object System.Windows.Forms.TextBox
$ListenBox1tab8.Location = New-Object System.Drawing.Size(10,50)
$ListenBox1tab8.Size = New-Object System.Drawing.Size(405,20)
$ListenBox1tab8.Text = ""
$Client2GroupBoxtab8.Controls.Add($ListenBox1tab8)

# Backup3 Restore Auswahl Button TAB 8
$Backup3Button8 = New-Object System.Windows.Forms.Button
$Backup3Button8.Location = New-Object System.Drawing.Size(290,75)
$Backup3Button8.Size = New-Object System.Drawing.Size(120,23)
$Backup3Button8.Text = "Backup auswählen"
$Backup3Button8.Add_Click({SelectFileDialog})
$Client2GroupBoxtab8.Controls.Add($Backup3Button8)

# Label Restore Warnung
$Label3tab8 = New-Object System.Windows.Forms.Label
$Label3tab8.Location = New-Object System.Drawing.Size(10,140) 
$Label3tab8.Size = New-Object System.Drawing.Size(380,40)
#$Label3tab8.ForeColor = “Magenta” 
$Label3tab8.Text = "Achtung: Beim Klick auf den Button 'Backup zurückspielen' werden alle $($SERVERVERSION) Dienste gestopt! Nach dem Restore aber automatisch wieder gestartet." 
$Client2GroupBoxtab8.Controls.Add($Label3tab8) 

# Backup3 Restore Auswahl Button TAB 8
$RestoreButton = New-Object System.Windows.Forms.Button
$RestoreButton.Location = New-Object System.Drawing.Size(145,200)
$RestoreButton.Size = New-Object System.Drawing.Size(140,23)
$RestoreButton.Text = "Backup zurückspielen"
$RestoreButton.Add_Click({Restore})
$Client2GroupBoxtab8.Controls.Add($RestoreButton)

# Clear Button TAB 8
$ClearButtontab8 = New-Object System.Windows.Forms.Button
$ClearButtontab8.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab8.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab8.Text = "zurücksetzen"
$ClearButtontab8.Add_Click({ClearTab8})
$tabPage8.Controls.Add($ClearButtontab8)

# Hilfe Button TAB 1
$HelpButtontab8 = New-Object System.Windows.Forms.Button
$HelpButtontab8.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab8.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab8.Text = "Hilfe"
$HelpButtontab8.Add_Click({HilfeTab8})
$tabPage8.Controls.Add($HelpButtontab8)

# OK Button TAB 8
$OKButton8 = New-Object System.Windows.Forms.Button
$OKButton8.Location = New-Object System.Drawing.Size(700,410)
$OKButton8.Size = New-Object System.Drawing.Size(75,23)
$OKButton8.Text = "Ok"
$OKButton8.Add_Click({Backup})
$tabPage8.Controls.Add($OKButton8)

# Cancel Button TAB 8
$CancelButton8 = New-Object System.Windows.Forms.Button
$CancelButton8.Location = New-Object System.Drawing.Size(780,410)
$CancelButton8.Size = New-Object System.Drawing.Size(75,23)
$CancelButton8.Text = „Ende“
$CancelButton8.DialogResult = „Cancel“
$CancelButton8.Add_Click({	if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage8.Controls.Add($CancelButton8)

# Ende TAB 8 Backup / Restore #############################################

# Beginn TAB 9 FaxClient, Kopierfunktionen, Sonstiges #####################
# Reiter9 anlegen
$tabPage9.TabIndex = 5
$tabPage9.UseVisualStyleBackColor = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 220
$System_Drawing_Size.Height = 136
$tabPage9.Size = $System_Drawing_Size
$tabPage9.Text = "Kopierfunktionen, FaxClient, Sonstiges"
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage9.Location = $System_Drawing_Point
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage9.Padding = $System_Windows_Forms_Padding
$tabPage9.Name = "tabPage9"
$tabPage9.DataBindings.DefaultDataSourceUpdateMode = 0
$tabControl.Controls.Add($tabPage9)

# Label Combobox Gruppe auswählen TAB 9  
$Labeltab9 = New-Object System.Windows.Forms.Label
$Labeltab9.Location = New-Object System.Drawing.Size(10,10) 
$Labeltab9.Size = New-Object System.Drawing.Size(280,20) 
$Labeltab9.Text = "Bitte eine Gruppe auswählen" 
$tabPage9.Controls.Add($Labeltab9) 

# Combobox  Gruppe auswählen TAB 9 Gruppen  
$Comboboxtab9 = New-Object System.Windows.Forms.Combobox 
$Comboboxtab9.Location = New-Object System.Drawing.Size(10,32) 
$Comboboxtab9.Size = New-Object System.Drawing.Size(260,20) 
#[void] $Combobox.Items.Add(" ")
[void] $Comboboxtab9.Items.Add("Konfig-Gruppe")
[void] $Comboboxtab9.Items.Add("Vertrieb")
[void] $Comboboxtab9.Items.Add("Verkauf")
[void] $Comboboxtab9.Items.Add("Jeder")
$Comboboxtab9.SelectedIndex = 0
$Comboboxtab9.Height = 70
$Comboboxtab9.add_DropDownClosed({$statusBar.Text = "Auswahl: "+$Comboboxtab9.SelectedItem +" " +$TextBox.Text})
$Comboboxtab9.add_DropDownClosed({$combobox.SelectedItem = $comboboxtab9.SelectedItem})
$Comboboxtab9.add_DropDownClosed({$comboboxtab2.SelectedItem = $Comboboxtab9.SelectedItem})
$Comboboxtab9.add_DropDownClosed({$comboboxtab3.SelectedItem = $Comboboxtab9.SelectedItem})
$Comboboxtab9.add_DropDownClosed({$comboboxtab6.SelectedItem = $Comboboxtab9.SelectedItem})
$Comboboxtab9.TabIndex = 0
$tabPage9.Controls.Add($Comboboxtab9) 
#$form.Topmost = $True

# Kopierfunktionen GroupBox1 TAB 9
$ClientGroupBoxtab9 = New-Object System.Windows.Forms.GroupBox
$ClientGroupBoxtab9.Location = New-Object System.Drawing.Size(330,15) 
$ClientGroupBoxtab9.size = New-Object System.Drawing.Size(540,230) 
$ClientGroupBoxtab9.text = "Kopierfunktionen" 
$tabPage9.Controls.Add($ClientGroupBoxtab9)

# Sonstiges GroupBox TAB 9
$SonstGroupBoxtab9 = New-Object System.Windows.Forms.GroupBox
$SonstGroupBoxtab9.Location = New-Object System.Drawing.Size(330,265) 
$SonstGroupBoxtab9.size = New-Object System.Drawing.Size(540,141) 
$SonstGroupBoxtab9.text = "Sonstiges" 
$tabPage9.Controls.Add($SonstGroupBoxtab9)

# Label für  Aufmerksamkeitston für signalisierte Rufe (Übernahme)
$Label1Sonttab9 = New-Object System.Windows.Forms.Label
$Label1Sonttab9.Location = New-Object System.Drawing.Size(10,20) 
$Label1Sonttab9.Size = New-Object System.Drawing.Size(380,20) 
$Label1Sonttab9.Text = " 1 -  Aufmerksamkeitston für signalisierte Rufe (Übernahme):" 
$SonstGroupBoxtab9.Controls.Add($Label1Sonttab9) 

# Label für Bei der nächsten Anmeldung das Kennwort ändern
$Label2Sonsttab9 = New-Object System.Windows.Forms.Label
$Label2Sonsttab9.Location = New-Object System.Drawing.Size(10,50) 
$Label2Sonsttab9.Size = New-Object System.Drawing.Size(380,20) 
$Label2Sonsttab9.Text = " 2 - Bei der nächsten Anmeldung das Kennwort ändern:" 
$SonstGroupBoxtab9.Controls.Add($Label2Sonsttab9) 

# Checkbox Aufmerksamkeitston für signalisierte Rufe (Übernahme) ein 
$7oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$7oncheckboxtab9.Location = New-Object System.Drawing.Size(400,18)
$7oncheckboxtab9.Size = New-Object System.Drawing.Size(40,20)
$7oncheckboxtab9.Checked=$false
$7oncheckboxtab9.Text = "ein"
$SonstGroupBoxtab9.Controls.Add($7oncheckboxtab9)

# Checkbox Aufmerksamkeitston für signalisierte Rufe (Übernahme) aus 
$7offcheckboxtab9 = New-Object System.Windows.Forms.checkbox
$7offcheckboxtab9.Location = New-Object System.Drawing.Size(450,18)
$7offcheckboxtab9.Size = New-Object System.Drawing.Size(50,20)
$7offcheckboxtab9.Checked=$false
$7offcheckboxtab9.Text = "aus"
$SonstGroupBoxtab9.Controls.Add($7offcheckboxtab9)

# Checkbox Bei der nächsten Anmeldung das Kennwort ändern ein 
$6oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$6oncheckboxtab9.Location = New-Object System.Drawing.Size(400,48)
$6oncheckboxtab9.Size = New-Object System.Drawing.Size(40,20)
$6oncheckboxtab9.Checked=$false
$6oncheckboxtab9.Text = "ein"
$SonstGroupBoxtab9.Controls.Add($6oncheckboxtab9)

# Checkbox Bei der nächsten Anmeldung das Kennwort ändern  aus 
$6offcheckboxtab9 = New-Object System.Windows.Forms.checkbox
$6offcheckboxtab9.Location = New-Object System.Drawing.Size(450,48)
$6offcheckboxtab9.Size = New-Object System.Drawing.Size(50,20)
$6offcheckboxtab9.Checked=$false
$6offcheckboxtab9.Text = "aus"
$SonstGroupBoxtab9.Controls.Add($6offcheckboxtab9)

# GroupBox Fax Client TAB 9
$FaxGroupBoxtab9 = New-Object System.Windows.Forms.GroupBox
$FaxGroupBoxtab9.Location = New-Object System.Drawing.Size(10,75) 
$FaxGroupBoxtab9.size = New-Object System.Drawing.Size(310,330) 
$FaxGroupBoxtab9.text = "Fax Client Einstellungen" 
$tabPage9.Controls.Add($FaxGroupBoxtab9)

# Label Fax Firma
$Label1Faxtab9 = New-Object System.Windows.Forms.Label
$Label1Faxtab9.Location = New-Object System.Drawing.Size(10,30) 
$Label1Faxtab9.Size = New-Object System.Drawing.Size(110,20)
#$Label1tab9.BackColor = "ControlDark" 
$Label1Faxtab9.Text = " Firmenname:" 
$FaxGroupBoxtab9.Controls.Add($Label1Faxtab9) 

# Eingabe Firmenname für Fax Client:
$FaxFirmaListenBox = New-Object System.Windows.Forms.TextBox
$FaxFirmaListenBox.Location = New-Object System.Drawing.Size(10,51)
$FaxFirmaListenBox.Size = New-Object System.Drawing.Size(280,20)
$FaxFirmaListenBox.Text = "Firma Muster AG"
$FaxGroupBoxtab9.Controls.Add($FaxFirmaListenBox)

# Label Fax Anschrift
$Label2Faxtab9 = New-Object System.Windows.Forms.Label
$Label2Faxtab9.Location = New-Object System.Drawing.Size(10,90) 
$Label2Faxtab9.Size = New-Object System.Drawing.Size(110,20)
#$Label1tab9.BackColor = "ControlDark" 
$Label2Faxtab9.Text = " Anschrift:" 
$FaxGroupBoxtab9.Controls.Add($Label2Faxtab9) 

# Eingabe Anschrift für Fax Client:
$FaxAnschriftListenBox = New-Object System.Windows.Forms.TextBox
$FaxAnschriftListenBox.Location = New-Object System.Drawing.Size(10,111)
$FaxAnschriftListenBox.Size = New-Object System.Drawing.Size(280,20)
$FaxAnschriftListenBox.Text = "Musterstr. 16 - 18, 12345 Beispielshausen"
$FaxGroupBoxtab9.Controls.Add($FaxAnschriftListenBox)

# Label Fax Abteilung
$Label3Faxtab9 = New-Object System.Windows.Forms.Label
$Label3Faxtab9.Location = New-Object System.Drawing.Size(10,150) 
$Label3Faxtab9.Size = New-Object System.Drawing.Size(110,20)
#$Label1tab9.BackColor = "ControlDark" 
$Label3Faxtab9.Text = " Abteilung:" 
$FaxGroupBoxtab9.Controls.Add($Label3Faxtab9) 

# Eingabe Abteilung für Fax Client:
$FaxAbteilungListenBox = New-Object System.Windows.Forms.TextBox
$FaxAbteilungListenBox.Location = New-Object System.Drawing.Size(10,171)
$FaxAbteilungListenBox.Size = New-Object System.Drawing.Size(280,20)
$FaxAbteilungListenBox.Text = "Technik"
$FaxGroupBoxtab9.Controls.Add($FaxAbteilungListenBox)

# OK Button TAB 9
$FaxButton = New-Object System.Windows.Forms.Button
$FaxButton.Location = New-Object System.Drawing.Size(100,245)
$FaxButton.Size = New-Object System.Drawing.Size(100,23)
$FaxButton.Text = "Schreiben"
$FaxButton.Add_Click({Faxsetup})
$FaxGroupBoxtab9.Controls.Add($FaxButton)

# Label Callrouting
$Label1tab9 = New-Object System.Windows.Forms.Label
$Label1tab9.Location = New-Object System.Drawing.Size(10,20) 
$Label1tab9.Size = New-Object System.Drawing.Size(250,20)
#$Label1tab9.BackColor = "ControlDark" 
$Label1tab9.Text = " Kopieren von Callrouting Scripten:" 
$ClientGroupBoxtab9.Controls.Add($Label1tab9) 

# Label Musteruser Callrouting
$Labe2tab9 = New-Object System.Windows.Forms.Label
$Labe2tab9.Location = New-Object System.Drawing.Size(20,45) 
$Labe2tab9.Size = New-Object System.Drawing.Size(110,20)
#$Label1tab9.BackColor = "ControlDark" 
$Labe2tab9.Text = " Musteruser:" 
$ClientGroupBoxtab9.Controls.Add($Labe2tab9) 

# Eingabe MusterUser für Callrouting:
$CopyCRListenBox = New-Object System.Windows.Forms.TextBox
$CopyCRListenBox.Location = New-Object System.Drawing.Size(135,45)
$CopyCRListenBox.Size = New-Object System.Drawing.Size(30,20)
$CopyCRListenBox.Text = "99"
$ClientGroupBoxtab9.Controls.Add($CopyCRListenBox)

# Checkbox  Callrouting
$1oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$1oncheckboxtab9.Location = New-Object System.Drawing.Size(270,45)
$1oncheckboxtab9.Size = New-Object System.Drawing.Size(100,20)
$1oncheckboxtab9.Checked=$false
$1oncheckboxtab9.Text = "kopieren"
$ClientGroupBoxtab9.Controls.Add($1oncheckboxtab9)

# Label Linekeys
$Label3tab9 = New-Object System.Windows.Forms.Label
$Label3tab9.Location = New-Object System.Drawing.Size(10,75) 
$Label3tab9.Size = New-Object System.Drawing.Size(250,20)
#$Label1tab9.BackColor = "ControlDark" 
$Label3tab9.Text = " Kopieren von Leitungstasten:" 
$ClientGroupBoxtab9.Controls.Add($Label3tab9) 

# Label Musteruser Linekeys
$Label4tab9 = New-Object System.Windows.Forms.Label
$Label4tab9.Location = New-Object System.Drawing.Size(20,100) 
$Label4tab9.Size = New-Object System.Drawing.Size(110,50)
#$Label1tab9.BackColor = "ControlDark" 
$Label4tab9.Text = " Musteruser:`r`n (Hilfe beachten!)" 
$ClientGroupBoxtab9.Controls.Add($Label4tab9) 

# Eingabe MusterUser für Linekeys:
$CopyLKListenBox = New-Object System.Windows.Forms.TextBox
$CopyLKListenBox.Location = New-Object System.Drawing.Size(135,100)
$CopyLKListenBox.Size = New-Object System.Drawing.Size(30,20)
$CopyLKListenBox.Text = "99"
$ClientGroupBoxtab9.Controls.Add($CopyLKListenBox)

# Checkbox  Linekeys kopieren
$2oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$2oncheckboxtab9.Location = New-Object System.Drawing.Size(270,100)
$2oncheckboxtab9.Size = New-Object System.Drawing.Size(100,20)
$2oncheckboxtab9.Checked=$false
$2oncheckboxtab9.Text = "kopieren"
$ClientGroupBoxtab9.Controls.Add($2oncheckboxtab9)

# Checkbox  Linekeys löschen
$3oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$3oncheckboxtab9.Location = New-Object System.Drawing.Size(370,100)
$3oncheckboxtab9.Size = New-Object System.Drawing.Size(100,20)
$3oncheckboxtab9.Checked=$false
$3oncheckboxtab9.Text = "löschen"
$3oncheckboxtab9.ForeColor = “Magenta”
$ClientGroupBoxtab9.Controls.Add($3oncheckboxtab9)

# Label Client Zertifikat
$Label4tab9 = New-Object System.Windows.Forms.Label
$Label4tab9.Location = New-Object System.Drawing.Size(10,152) 
$Label4tab9.Size = New-Object System.Drawing.Size(250,50)
#$Label1tab9.BackColor = "ControlDark" 
$Label4tab9.Text = " Remote Connector Client Zertifikate:`r`n (bei SmartPhone Integration benötigt) " 
$ClientGroupBoxtab9.Controls.Add($Label4tab9) 

# Checkbox  Client Zertifikat erstellen
$4oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$4oncheckboxtab9.Location = New-Object System.Drawing.Size(270,150)
$4oncheckboxtab9.Size = New-Object System.Drawing.Size(100,20)
$4oncheckboxtab9.Checked=$false
$4oncheckboxtab9.Text = "erstellen"
$ClientGroupBoxtab9.Controls.Add($4oncheckboxtab9)

# Checkbox  Client Zertifikat löschen
$5oncheckboxtab9 = New-Object System.Windows.Forms.checkbox
$5oncheckboxtab9.Location = New-Object System.Drawing.Size(370,150)
$5oncheckboxtab9.Size = New-Object System.Drawing.Size(100,20)
$5oncheckboxtab9.Checked=$false
$5oncheckboxtab9.Text = "löschen"
$5oncheckboxtab9.ForeColor = “Magenta”
$ClientGroupBoxtab9.Controls.Add($5oncheckboxtab9)

# Clear Button TAB 9
$ClearButtontab9 = New-Object System.Windows.Forms.Button
$ClearButtontab9.Location = New-Object System.Drawing.Size(525,410)
$ClearButtontab9.Size = New-Object System.Drawing.Size(80,23)
$ClearButtontab9.Text = "zurücksetzen"
$ClearButtontab9.Add_Click({ClearTab9})
$tabPage9.Controls.Add($ClearButtontab9)

# Hilfe Button TAB 9
$HelpButtontab9 = New-Object System.Windows.Forms.Button
$HelpButtontab9.Location = New-Object System.Drawing.Size(615,410)
$HelpButtontab9.Size = New-Object System.Drawing.Size(75,23)
$HelpButtontab9.Text = "Hilfe"
$HelpButtontab9.Add_Click({HilfeTab9})
$tabPage9.Controls.Add($HelpButtontab9)

# OK Button TAB 9
$OKButton9 = New-Object System.Windows.Forms.Button
$OKButton9.Location = New-Object System.Drawing.Size(700,410)
$OKButton9.Size = New-Object System.Drawing.Size(75,23)
$OKButton9.Text = "Ok"
$OKButton9.Add_Click({Kopierfunktionen})
$tabPage9.Controls.Add($OKButton9)

# Cancel Button TAB 9
$CancelButton9 = New-Object System.Windows.Forms.Button
$CancelButton9.Location = New-Object System.Drawing.Size(790,410)
$CancelButton9.Size = New-Object System.Drawing.Size(75,23)
$CancelButton9.Text = „Ende“
$CancelButton9.DialogResult = „Cancel“
$CancelButton9.Add_Click({
							if ($KONFERENZUSER -eq 1) { Get-IpPbxUser -UserName "Konferenz" -AddBuiltInUser | Remove-IpPbxUserWindowsAccount -Confirm:$false -ErrorAction Stop }
							Disconnect-ippbx
							$form.Close()})
$tabPage9.Controls.Add($CancelButton9)

# Ende TAB 9 FaxClient, Kopierfunktionen, Sonstiges ######################


# Funktionen Start:
#
# Funktionen Start für den TAB ClientEinstellungen
function ClientEinstellungen
	{
		if (($SecCalloncheckbox.Checked -and $SecCalloffcheckbox.Checked) -or
			($MinClientoncheckbox.Checked -and $MinClientoffcheckbox.Checked) -or
			($3oncheckbox.Checked -and $3offcheckbox.Checked) -or
			($4oncheckbox.Checked -and $4offcheckbox.Checked) -or
			($5oncheckbox.Checked -and $5offcheckbox.Checked) -or
			($6oncheckbox.Checked -and $6offcheckbox.Checked) -or
			($7oncheckbox.Checked -and $7offcheckbox.Checked) -or
			($8oncheckbox.Checked -and $8offcheckbox.Checked) -or
			($9oncheckbox.Checked -and $9offcheckbox.Checked) -or
			($10oncheckbox.Checked -and $10offcheckbox.Checked) -or
			($11oncheckbox.Checked -and $11offcheckbox.Checked) -or
			($12oncheckbox.Checked -and $12offcheckbox.Checked) -or
			($13oncheckbox.Checked -and $13offcheckbox.Checked) -or
			($14oncheckbox.Checked -and $14offcheckbox.Checked))			
				{									
					#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
					[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
					return
				}						
			
		if ($comboBox.SelectedItem -eq " ") { $outputBox.Text = "Bitte zuerst eine Gruppe auswählen! `r`n" ; return }
		else 
		{
			$outputBox.Text = "Starte Funktion....`r`n"
			$Members = Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem
			Foreach($Member in $Members) 	
				{
					$u = get-ippbxuser -username $Member.Name
				
					if ($SecCalloffcheckbox.Checked) 
						{ 
							$outputBox.Text += "Zweitanruf 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.SecondCallEnabled = 0 
						} 
					if ($SecCalloncheckbox.Checked) 
						{ 
							$outputBox.Text += "Zweitanruf 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.SecondCallEnabled = 1 
						} 
					if ($12oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Authentifizierung Windows Account 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.IpPbxLoginAllowed = 1 
						}
					if ($12offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Authentifizierung Benutzername Kennwort 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.IpPbxLoginAllowed = 0 
						}
					if ($13oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Authentifizierung Benutzername Kennwort 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.WindowsLoginAllowed = 1 
						}
					if ($13offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Authentifizierung Windows Account 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.WindowsLoginAllowed = 0 
						}
					if ($wwcheckbox.Checked) 
						{ 
							$outputBox.Text += "Anzahl Wahlwiederholungsliste für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.MaxRedialListLen = $ListenBox1.Text 
						}
					if ($alcheckbox.Checked) 
						{ 
							$outputBox.Text += "Anzahl Anruferlistet für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.MaxPhoneCallListLen = $ListenBox2.Text 
						}
					if ($vmcheckbox.Checked) 
						{ 
							$outputBox.Text += "Begrüßungsansage " +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.VoiceMailFile = "Standardansage ohne Aufzeichnung.wav" 
						}
					if ($vmmcheckbox.Checked) 
						{ 
							$outputBox.Text += "Begrüßungsansage " +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
							$u.VoiceMailFile = "Standardansage.wav" 
						}
																			
					Update-IpPbxUser $u 
																		
					$a = get-IpPbxUserData -username $Member.Name
											
					if ($MinClientoffcheckbox.Checked) 
						{ 
							$outputBox.Text += "Client nach Gespräch minimieren 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n"
							$a.m_bMinimizeWhenInactive = 0 
						}
					if ($MinClientoncheckbox.Checked) 
						{ 
							$outputBox.Text += "Client nach Gespräch minimieren 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n"
							$a.m_bMinimizeWhenInactive = 1 
						}
					if ($3oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Collaboration 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n"  
							$a.m_bAppSharingEnabled = 1 
						}
					if ($3offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Collaboration 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bAppSharingEnabled = 0 
						}
					if ($4oncheckbox.Checked) 
						{ 	
							$outputBox.Text += "Rufbenachrichtigung für Rufe in der Taskleiste 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bCallNotificationInTray = 1 
						}
					if ($4offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Rufbenachrichtigung für Rufe in der Taskleiste 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bCallNotificationInTray = 0 
						}
					if ($5oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Rufbenachrichtigung für Rufsignalisierungen in der Taskleiste 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bCallNotificationInTrayN = 1 
						}
					if ($5offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Rufbenachrichtigung für Rufsignalisierungen in der Taskleiste 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bCallNotificationInTrayN = 0 
						}
					if ($6oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Client beim Klingel anzeigen 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bPopUpOnIncomingCall = 1 
						}
					if ($6offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Client beim Klingel anzeigen 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bPopUpOnIncomingCall = 0 
						}
					if ($7oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Verbinden durch auflegen 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bTransferViaHookOn = 1 
						}
					if ($7offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Verbinden durch auflegen 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bTransferViaHookOn = 0 
						}								
					if ($8oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Beim minimieren nur Symbol anzeigen 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bMinimizeToTrayIcon = 1 
						}
					if ($8offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Beim minimieren nur Symbol anzeigen 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bMinimizeToTrayIcon = 0 
						}
					if ($9oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Aufmerksamkeitston für signalisierte Rufe 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bSignalGroupNotificationCall = 1 
						}
					if ($9offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Aufmerksamkeitston für signalisierte Rufe 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bSignalGroupNotificationCall = 0 
						}									
					if ($10oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Aufmerksamkeitston für signalisierte Rufe 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bEnableKnockingSound = 1 
						}
					if ($10offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Aufmerksamkeitston für signalisierte Rufe 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bEnableKnockingSound = 0 
						}
					if ($11oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Headset Taste aktivieren 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bUsePhoneHeadset = 1 
						}
					if ($11offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Headset Taste aktivieren 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name  +" wird geschrieben....`r`n" 
							$a.m_bUsePhoneHeadset = 0 
						}
					if ($14oncheckbox.Checked) 
						{ 
							$outputBox.Text += "Minimieren nach Gespräch 'ein' für" +" " +$comboBox.SelectedItem  +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bMinimizeWhenInactive = 1 
						}
					if ($14offcheckbox.Checked) 
						{ 
							$outputBox.Text += "Minimieren nach Gespräch 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_bMinimizeWhenInactive = 0 
						}
					if ($bcticheckbox.Checked) 
						{ 
							$outputBox.Text += "Klingeln von CTI Geräten für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_iCtiRingingMode = 0 
						}
					if ($ccticheckbox.Checked) 
						{	
							$outputBox.Text += "Klingeln von CTI Geräten  für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_iCtiRingingMode = 1 
						}
					if ($ecticheckbox.Checked) 
						{ 
							$outputBox.Text += "Klingeln von CTI Geräten  für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_iCtiRingingMode = 2 
						}
					if ($altxcheckbox.Checked) 
						{ 
							$outputBox.Text += "HotKey Alt-X für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
							$a.m_HotkeySettings | Where-Object {$_.Command -eq "32808"} | ForEach-Object {$_.Key=88; $_.Alt=1; $_.Shift=0; $_.Ctrl=0; $_.ScanCode=539820033} 
						}
																												
					Get-IpPbxUser -username $Member.Name | Set-IpPbxUserData -Userdata $a
				}		
			}
		$outputBox.Text +=" ...fertig.`r`n"
	}	
# Funktionen Ende für den TAB ClientEinstellungen

# Funktionen Start für den TAB Rufumleitung

						
function Rufumleitungen
	{	
		if (($iumloncheckbox.Checked -and $iumloffcheckbox.Checked) -or
			($bumloncheckbox.Checked -and $bumloffcheckbox.Checked) -or
			($tumloncheckbox.Checked -and $tumloffcheckbox.Checked))			
				{									
					#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
					[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
					return
				}						
		
		if ($comboBoxtab2.SelectedItem -eq " ") 
			{ 
				$outputBox.Text = "Bitte zuerst eine Gruppe auswählen! `r`n" ; return 
			}
		else 
			{
				$outputBox.Text = "Starte Funktion....`r`n"
				$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab2.SelectedItem
				Foreach($Member in $Members) 	
					{
						$u = get-ippbxuser -username $Member.Name

						if ($iumloncheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung sofort 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.DefaultFwd = 1 
							}
						if ($iumloffcheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung sofort 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.DefaultFwd = 0 
							}
						if ($bumloncheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung bei besetzt 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnBusy = 1 
							}
						if ($bumloffcheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung bei besetzt 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnBusy = 0 
							}
						if ($tumloncheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung nach Zeit 'ein' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnNoAnswer = 1 
							}
						if ($tumloffcheckbox.Checked) 
							{ 
								$outputBox.Text += "Rufumleitung nach Zeit 'aus' für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnNoAnswer = 0 
							}
						if ($timecheckbox.Checked) 
							{ 
								$outputBox.Text += "Zeit bis Rufumleitung nach Zeit für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnNoAnswerTimeout = $ZeitBox.Text 
							}
						if ($umltarget1.Checked) 
							{ 
								$outputBox.Text += "Rufumleitungsziel bei besetzt für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnBusyNumber = $ListenBox3.Text 
							}
						if ($umltarget2.Checked) 
							{ 
								$outputBox.Text += "Rufumleitungsziel nach Zeit für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.FwdOnNoAnswerNumber = $ListenBox4.Text 
							}
						if ($umltarget3.Checked) 
							{ 
								$outputBox.Text += "Rufumleitungsziel sofort für" +" " +$comboBox.SelectedItem +" " +"User " +$u.Name +" wird geschrieben....`r`n" 
								$u.DefaultFwdNum = $ListenBox5.Text 
							}
																							
						Update-IpPbxUser $u 
					}		
			}
		$outputBox.Text +=" ...fertig.`r`n"
	}	
# Funktionen ENDE für den TAB Rufumleitung

# Funktionen Start für den TAB Telefoneinstellungen					
function Pinauslesen 
	{
		$outputBox.Text = "Starte Funktion....`r`n"
		$outputBox.Text += " --------------------------------------`r`n"
		$outputBox.Text += "  Rufnummer:   PIN:   `r`n"
		$outputBox.Text += " --------------------------------------`r`n"

		# Liest alle User ein
		Get-IpPbxUser -ReadOnly -AddDeviceInformation | ForEach-Object {
		
    			# Liest die interne Rufnummer
				$nummer  = $_.InternalNumbers 

				# Liest den Usernamen ein
				$name = $_.Name 
					
				# UserDate für PIN abfragen 
				$data = Get-IpPbxUser -Username $name
				$pin = $data.LanPhonePin 
						
				# Wenn User eine Pin hat Daten ausgeben
				If ($pin -gt "0") 
					{ 
				        #zeigt den Inhahalt der Kurzwahlübersicht in der Konsole an, nur Info
						$outputBox.Text += "  $nummer                  $pin  `r`n" 
						$outputBox.Text += " ----------------------------------------`r`n"
					}
			}
			#	[System.Windows.Forms.MessageBox]::Show($Output1 + $Output2 + $Output3)
	}

function Pinexport 
	{
		$TEXTFILE = "$HOME\Desktop\TelefonPINs.txt"
		$outputBox.Text = "Starte Export der Telefon Pins in Datei auf dem Desktop.... `r`n" 
		Write-Output " --------------------------------------`r`n" >> $TEXTFILE
		Write-Output "  Rufnummer:          PIN:   `r`n" >> $TEXTFILE
		Write-Output " --------------------------------------`r`n" >> $TEXTFILE

        # Liest alle User ein
        Get-IpPbxUser -ReadOnly -AddDeviceInformation | ForEach-Object {
		
				# Liest die interne Rufnummer
				$nummer  = $_.InternalNumbers 

				# Liest den Usernamen ein
				$name = $_.Name 
				
				# UserDate für PIN abfragen 
				$data = Get-IpPbxUser -Username $name
				$pin = $data.LanPhonePin 
					
				# Wenn User eine Pin hat Daten ausgeben
				If ($pin -gt "0") 
					{ 
						#zeigt den Inhahalt der Kurzwahlübersicht in der Konsole an, nur Info
						$exportBox += "  $nummer                  $pin  " >> $TEXTFILE
						$exportBox += " ----------------------------------------" >> $TEXTFILE

					}
			}
		#Import-CSV $TEXTFILE -delimiter "`r" | Export-csv -Path "$env:Public\Desktop\TelefonPINs.csv" 
		$outputBox.Text += " fertig.`r`n"
		Sleep 1
		notepad.exe $HOME\Desktop\TelefonPINs.txt
	}

function Telefoneinstellungen 
	{
		if (($autfwoncheckbox.Checked -and $autfwoffcheckbox.Checked) -or
			($autanoncheckbox.Checked -and $autanoffcheckbox.Checked))			
				{									
					#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
					[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
					return
				}					
		
		
		if ($maccheckbox.Checked) 
					{ 
						$Frage = [System.Windows.Forms.MessageBox]::Show("Alle MAC Adresen der ausgewählten Gruppe löschen?" , "MAC Adresen löschen?" , 4 , [System.Windows.Forms.MessageBoxIcon]::Question)
						switch  ($Frage) 
							{
								'No' 	{ 
											$outputBox.Text += "`r`nMAC Adressen löschen abgebrochen!`r`n"
											$maccheckbox.Checked=$false
										
										}
								
								'Yes' 	{ 
											$maccheckbox.Checked=$true
										}
									
							}
					}
		
		
		$outputBox.Text = "Starte Funktion....`r`n"
		sleep 1

		if ($1oncheckboxtab3.Checked)  
			{ 
				[System.Windows.Forms.MessageBox]::Show("Funktion zurzeit deaktiviert wegen Fehlern!","Fehler!")
				$outputBox.Text = ""
				return
				
				if (!$CopyFTListenBox.Text) 
					{		
						#$outputBox.Text +=  "Bitte erst einen Muster User eingeben!`r`n"
						[System.Windows.Forms.MessageBox]::Show("Bitte erst einen Muster User eingeben!","Fehler!")
						return
					}
													
				$defaultid= ""
				$defaultname = ""
				$defaultid = Get-IpPbxNumberOwner $CopyFTListenBox.Text
				$defaultname = $defaultid.Name
		  
				# Prüfen ob es die Rufnummer gibt.  
				if (!$defaultid) 
					{		
						#$outputBox.Text +=  "Für diese Rufnummer konnten keine Daten gelesen werden!`r`n"
						[System.Windows.Forms.MessageBox]::Show("Für diese Rufnummer konnten keine Daten gelesen werden!","Fehler!")
						return
					}
				if ($defaultid) 
					{ 
						$outputBox.Text += " Funktionstasten von User " +$CopyFTListenBox.Text +" werden allen Usern der Gruppe " +$comboBox.SelectedItem +" geschrieben....`r`n"
						$SoureUser = Get-IpPbxUser -Username $defaultname -ReadOnly
						$Members = Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem
						# Prüfen ob Mitglieder in der Gruppe sind
						if (!$Members) 
							{ 
								[System.Windows.Forms.MessageBox]::Show("Keine Mitglieder in der ausgewählten Gruppe!","Fehler!")
								$outputBox.Text += "Abbruch!"
								return
							}
						Foreach($Member in $Members) 
							{
								#Daten vom Musteruser auslesen
								$u = Get-IpPbxUser -Name $defaultname
								$ud = Get-IpPbxUserData -UserEntry $u
								#Zieluser Daten auslesen
								$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
								$TargetUserData = Get-IpPbxUserData -UserEntry $TargetUser
								# PhoneSettings des Zielusers mit den Daten des Musterusers überschreiben
								$TargetUserData.m_PhoneSettings = $ud.m_PhoneSettings
								if("$TargetUser" -ne "$u")
									{
										$outputBox.Text +=  " Schreibe Funktionstasten für User " +$Member.Name +"...`r`n"
										Set-IpPbxUserData -UserEntry $TargetUser -UserData $TargetUserData
										sleep 1
									}
							}
						$outputBox.Text +=  "  ...Funktionstasten fertig.`r`n"
					}	
			}
											
		if ($autfwoffcheckbox.Checked) 
			{ 
				$outputBox.Text += "Automatisches Firmwareupdate aus" +" wird geschrieben....`r`n" 
				$name = "AutoFirmwareUpdate"
				$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options"
				if (-Not(Test-Path “$pfad”)) 
					{
						New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
					}
				Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
			}
		if ($autfwoncheckbox.Checked) 
			{ 
				$outputBox.Text += "Automatisches Firmwareupdate ein" +" wird geschrieben....`r`n" 
				$name = "AutoFirmwareUpdate"
				$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options"
				if (-Not(Test-Path “$pfad”)) 
					{
						New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
					}
				Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
			}


		$Members = Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem
		Foreach($Member in $Members) 	
			{
				$a = get-IpPbxUserData -username $Member.Name
				if ($klingelcheckbox.Checked) 
					{ 
						$outputBox.Text += "Klingellautstärke für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						$a.m_PhoneSettings | Where-Object {	$_.VolumeOfRingingToneInternal -ne "8" } | ForEach-Object {	$_.VolumeOfRingingToneInternal = $KlingelListenBox.Text	}
						$a.m_PhoneSettings | Where-Object { $_.VolumeOfRingingToneExternal -ne "8" } | ForEach-Object { $_.VolumeOfRingingToneExternal = $KlingelListenBox.Text }
					} 
				if ($autanoncheckbox.Checked) 
					{ 	
						$outputBox.Text += "Automatisches Anmelden des IP Telefons für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem | ForEach-Object { Set-IpPbxUserPhoneLogin -UserEntry $_ -EnableAutoLogin:$true } 
					}
				if ($autanoffcheckbox.Checked) 
					{ 
						$outputBox.Text += "Automatisches Anmelden des IP Telefons für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem | ForEach-Object { Set-IpPbxUserPhoneLogin -UserEntry $_ -EnableAutoLogin:$false } 
					}
				if ($maccheckbox.Checked) 
					{ 
						$outputBox.Text += "MAC Adresse des IP Telefons löschen für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						Get-IpPbxGroupMember -GroupName $comboBox.SelectedItem  | ForEach-Object { Set-IpPbxUserPhoneLogin -UserEntry $_ -PhoneMAC "" } 
					}
				if ($1xpincheckbox.Checked) 
					{ 
						$outputBox.Text += "PIN des IP Telefons gleich Rufnummer  für" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						$pin = $Member.InternalNumberEntryCollection[0].Number
						$Member.LanPhonePIN = "$pin"
						update-ippbxuser -userentry $Member
					}
				if ($2xpincheckbox.Checked) 
					{ 
						$outputBox.Text += "PIN IP-Telefon eigene Rufnummer 6-stellig" +" " +$comboBox.SelectedItem +" " +"User " +$Member.Name +" wird geschrieben....`r`n" 
						$pin = $Member.InternalNumberEntryCollection[0].Number
						$measureObject = $pin | Measure-Object -Character
						$count = $measureObject.Characters
						#	Write-Host $count
						if($count -eq 1) { $NEWPIN = "$pin" + "00000" }
						if($count -eq 2) { $NEWPIN = "$pin" + "0000" }
						if($count -eq 3) { $NEWPIN = "$pin" + "000" }
						if($count -eq 4) { $NEWPIN = "$pin" + "00" }
						if($count -eq 5) { $NEWPIN = "$pin" + "0" }
						if($count -eq 6) { $NEWPIN = "$pin" }
						#	Write-Host $NEWPIN
						$Member.LanPhonePIN = "$NEWPIN"
						update-ippbxuser -userentry $Member
					}
										
			}
		Get-IpPbxUser -username $Member.Name | Set-IpPbxUserData -Userdata $a
		$outputBox.Text +=" ...alles erledigt.`r`n"
	}
																		
							
					
# Funktionen ENDE für den TAB Telefoneinstellungen	

# Funktionen Start für den TAB Windowsfeatures
function Windowsfeatures 
	{	
		$outputBox.Text += " Starte Funktionen, bitte warten...."
		if ($telnetcheckbox.Checked) 
			{ 
				$outputBox.Text += "`r`nTelnet Client wird installiert...."
				Write-Progress -Activity "Install Telnet Client...."
				Add-WindowsFeature Telnet-Client
				Sleep 15
				$a = get-WindowsFeature Telnet-Client
				if ($a.Installed) { $outputBox.Text += "`r`nTelnet Client installiert." }
				else 
					{ 
						$outputBox.Text += "`r`nInstallation dauert noch....."
						sleep 10
					}	
			}
			
		if ($snipcheckbox.Checked) 
			{ 
				$outputBox.Text += "`r`nSnipping Tool wird installiert...."
				Write-Progress -Activity "Install Snipping Tool...."
				Add-WindowsFeature Desktop-Experience
				Sleep 15
				$a = get-WindowsFeature Desktop-Experience
				if ($a.Installed) { $outputBox.Text += "`r`nSnipping Tool installiert." }
				else 
					{ 
						$outputBox.Text += "`r`nInstallation dauert noch....."
						sleep 10
					}	
						
			
				$outputBox.Text += "fertig."
				$snipcheckbox.Checked=$false
			}
		if ($ftpcheckbox.Checked) 
			{ 
				$outputBox.Text += "`r`nFTP Server wird installiert, bitte warten...."
				$appPoolName = "SwyxPool" 
				$ftpSiteTitle = "SwyxPhoneFirmware"
				$folderPath = "C:\inetpub\ftproot"
				Import-Module ServerManager
				$ftpService = Get-WindowsFeature Web-Ftp-Server | Select -Expand Installed
				if (!$ftpService -match "True") 
					{
						$outputBox.Text += "`r`nFTP Server ist noch nicht installiert."
						$outputBox.Text += "`r`nInstalliere FTP Server..."
						Add-WindowsFeature Web-FTP-Server
						Start-Sleep -Milliseconds 300
						$outputBox.Text += "fertig."
						sleep 1
						$outputBox.Text += "`r`nWeb-Management Console wird installiert...."
						if ($OSNAME -eq "Windows Server 2012") {	Install-WindowsFeature  Web-Mgmt-Console }
						if ($OSNAME -eq "Windows Server 2008") {	Add-WindowsFeature  Web-Mgmt-Console }
						sleep 1
						$outputBox.Text += "`r`nModul WebAdministration wird geladen...."
						Import-Module WebAdministration -EA SilentlyContinue
						$ErrorActionPreference = "SilentlyContinue"
						$ftpprotocol = "ftp"
						$bindingInformation = "*:21:"
						$bindings = '@{protocol="' + $ftpprotocol + '";bindingInformation="'+ $bindingInformation +'"}'
						$outputBox.Text += "`r`nErzeuge Anwendungspool:" +$appPoolName
						New-Item IIS:AppPools\$appPoolName -Verbose:$false -force -EA SilentlyContinue
						sleep 1
						if(!(Test-Path "$folderPath"))
							{
								New-Item $folderPath -itemType directory
							}
						$outputBox.Text += "`r`nErzeuge FTP Seite: $ftpSiteTitle"
						New-Item IIS:Sites\$ftpSiteTitle -bindings $bindings -physicalPath $folderPath -Verbose:$false -force -EA SilentlyContinue 
						Set-ItemProperty IIS:Sites\$ftpSiteTitle -Name applicationPool -Value $appPoolName -EA SilentlyContinue 
						sleep 1
						Set-ItemProperty IIS:Sites\$ftpSiteTitle -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true -EA SilentlyContinue
						sleep 1
						Set-ItemProperty IIS:Sites\$ftpSiteTitle -Name ftpServer.security.authentication.anonymousAuthentication.enabled -Value $true -EA SilentlyContinue
						sleep 1
						Set-ItemProperty IIS:Sites\$ftpSiteTitle -Name ftpServer.security.ssl.controlChannelPolicy -Value 0 -EA SilentlyContinue
						sleep 1
						Set-ItemProperty IIS:Sites\$ftpSiteTitle -Name ftpServer.security.ssl.dataChannelPolicy -Value 0 -EA SilentlyContinue
						sleep 1
						Set-ItemProperty IIS:AppPools\$appPoolName managedRuntimeVersion v4.0  -EA SilentlyContinue
						sleep 1
						$outputBox.Text += "`r`nRechte werden gesetzt.`r`n"
						Add-WebConfiguration -Filter /System.FtpServer/Security/Authorization -Value (@{AccessType="Allow";Users="?"; Permissions="Read"}) -PSPath IIS: -Location "$ftpSiteTitle" -EA SilentlyContinue
						$outputBox.Text += "`r`nAlles erledigt, FTP Server installiert und konfiguriert.`r`n"
						$ftpcheckbox.Checked=$false
					}
				else 
					{
						$outputBox.Text += "`r`nFTP Server ist berits installiert!`r`n"
					}
				$ftpcheckbox.Checked=$false
			}
							
		if ($firmwarecheckbox.Checked) 
			{
				# Parameter
				$User = "anonymous"
				$Passw = "anonymous"
				$url = "ftp://ftp.swyx.de/fw11/"
				$localPath = "C:\inetpub\ftproot"
				$credentials = New-Object System.Net.NetworkCredential($User, $Passw) 

				$listRequest = [Net.WebRequest]::Create($url)
				$listRequest.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails
				$listRequest.Credentials = $credentials
				$lines = New-Object System.Collections.ArrayList
	
				$outputBox.Text += "`r`nTeste FTP Verbindung...."
				# Teste FTP Verbindung
				Try
					{
						$listResponse = $listRequest.GetResponse() #| Out-Null 
					}
				# Bei Verbindungsfehler abbrechen mit Meldung 
				catch 
					{
						if (!$listResponse) 
							{
								$outputBox.Text += "`r`nKeine verbindung zum FTP Server!"
								[System.Windows.Forms.MessageBox]::Show("Keine Verbindung zum Server!","Fehler!")
								return			
							}
					}
				$outputBox.Text += " OK."
				$listResponse = $listRequest.GetResponse()
				$listStream = $listResponse.GetResponseStream()
				$listReader = New-Object System.IO.StreamReader($listStream)
				If (!$listreader) 
					{ 
						$outputBox.Text += "`r`nKeine Dateien gefunden."
						[System.Windows.Forms.MessageBox]::Show("Keine Dateien auf dem Server gefunden!","Fehler!")
						return			 
					}
				while (!$listReader.EndOfStream)
					{
						$line = $listReader.ReadLine()
						$lines.Add($line) | Out-Null
					}
				# Falls zu weinige Dateien in dem FTP Verzeichnis gefunden wurden, normal 16 
				if ($lines.Count -lt 10) 
					{ 	
						$outputBox.Text += "`r`nZu wenige Dateien auf dem FTP Server gefunden!" 
						[System.Windows.Forms.MessageBox]::Show("Zu wenige Dateien auf dem Server gefunden!","Fehler!")
						return			
					}
				else 
					{ 
						$outputBox.Text += "`r`nLese Dateien auf dem FTP Server ein." }	
						$listReader.Dispose()
						$listStream.Dispose()
						$listResponse.Dispose()
	
						# Start Werte für Progressbar
						$anzahl = 16
						$i = 0
															
						foreach ($line in $lines)
							{	
								$i++
								# aktuellen Prozentsatz der Fertigstellung berechnen:
								$prozent = $i * 100 / $anzahl	

								# Fortschrittsanzeige aktualisieren:
								$progressBar.Value = $prozent
								try 
									{
										$form.Dispatcher.Invoke([System.Action]{}, 'Background') 
										Start-Sleep -Milliseconds 100
									}
								catch {}
								$tokens = $line.Split(" ", 9, [StringSplitOptions]::RemoveEmptyEntries)
								$name = $tokens[8]
								$permissions = $tokens[0]
								$localFilePath = Join-Path $localPath $name
								$fileUrl = ($url + $name)
								if ($permissions[0] -eq 'd')
									{
										if (!(Test-Path $localFilePath -PathType container))
											{
												$outputBox.Text += "`r`n" +("Erzeuge FTP Verzeichnis {0}" -f $localFilePath)
												New-Item $localFilePath -Type directory | Out-Null
											}
										DownloadFtpDirectory ($fileUrl + "/") $credentials $localFilePath
									}
								else
									{
										if (($name -like "*.img") -or ($name -like "*.bmp") -or ($name -like "*.png")) 
										{	
										$outputBox.Text += "`r`nDownloading " +$name +" nach" +" " +$localFilePath
										Start-Sleep -Milliseconds 300
										#Scroll to the end of the textbox
										$outputBox.SelectionStart = $outputBox.TextLength
										$outputBox.ScrollToCaret()
										$downloadRequest = [Net.WebRequest]::Create($fileUrl)
										$downloadRequest.Method = [System.Net.WebRequestMethods+FTP]::DownloadFile
										$downloadRequest.Credentials = $credentials
										$downloadResponse = $downloadRequest.GetResponse()
										$sourceStream = $downloadResponse.GetResponseStream()
										$targetStream = [System.IO.File]::Create($localFilePath)
										$buffer = New-Object byte[] 10240
										while (($read = $sourceStream.Read($buffer, 0, $buffer.Length)) -gt 0)
											{
												$targetStream.Write($buffer, 0, $read);
											}
										$targetStream.Dispose()
										$sourceStream.Dispose()
										$downloadResponse.Dispose()
										}
									}
							}

						$outputBox.Text += "`r`nDownload beendet."
						$progressBar.Value = 0
															
						# Whitelist downloaden und installieren
						# Parameter
						$User = "anonymous"
						$Passw = "anonymous"
						$url = "ftp://ftp.swyx.de/pub/phonewhitelist/"
						$localPath = "C:\inetpub\ftproot"
						$credentials = New-Object System.Net.NetworkCredential($User, $Passw) 
						$listRequest = [Net.WebRequest]::Create($url)
						$listRequest.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails
						$listRequest.Credentials = $credentials
						$lines = New-Object System.Collections.ArrayList
	
						$outputBox.Text += "`r`nStarte Download Whitelist.msi...."
						$listResponse = $listRequest.GetResponse() #| Out-Null 
						$listResponse = $listRequest.GetResponse()
						$listStream = $listResponse.GetResponseStream()
						$listReader = New-Object System.IO.StreamReader($listStream)
						If (!$listreader) 
							{ 
								$outputBox.Text += "`r`nKeine Dateien gefunden."
								[System.Windows.Forms.MessageBox]::Show("Keine Dateien auf dem Server gefunden!","Fehler!")
								return					 
							}
						while (!$listReader.EndOfStream)
							{
								$line = $listReader.ReadLine()
								$lines.Add($line) | Out-Null
							}
						# Falls zu weinige Dateien in dem FTP Verzeichnis gefunden wurden, normal 1
						if ($lines.Count -lt 1) 
							{ 	
								$outputBox.Text += "`r`nDatei nicht auf dem FTP Server gefunden!" 
								[System.Windows.Forms.MessageBox]::Show("Datei nicht auf dem FTP Server gefunden!","Fehler!")
								return					
							}
						else 
							{
								$outputBox.Text += "`r`nLese Dateie auf dem FTP Server ein." }	
								$listReader.Dispose()
								$listStream.Dispose()
								$listResponse.Dispose()
								try 
									{
										$form.Dispatcher.Invoke([System.Action]{}, 'Background')
										Start-Sleep -Milliseconds 300
									}
								catch {}
								$name = "PhoneWhitelist.msi"
								$localFilePath = Join-Path $localPath $name
								$fileUrl = ($url + $name)
															
								$outputBox.Text += "`r`nDownloading " +$name +" nach" +" " +$localFilePath
								#Scroll to the end of the textbox
								$outputBox.SelectionStart = $outputBox.TextLength
								$outputBox.ScrollToCaret()
								$downloadRequest = [Net.WebRequest]::Create($fileUrl)
								$downloadRequest.Method = [System.Net.WebRequestMethods+FTP]::DownloadFile
								$downloadRequest.Credentials = $credentials
								$downloadResponse = $downloadRequest.GetResponse()
								$sourceStream = $downloadResponse.GetResponseStream()
								$targetStream = [System.IO.File]::Create($localFilePath)
								$buffer = New-Object byte[] 10240
								while (($read = $sourceStream.Read($buffer, 0, $buffer.Length)) -gt 0)
									{
										$targetStream.Write($buffer, 0, $read);
									}
								$targetStream.Dispose()
								$sourceStream.Dispose()
								$downloadResponse.Dispose()
																	
								$outputBox.Text += "`r`nDownload beendet."
								$progressBar.Value = 0
								$firmwarecheckbox.Checked=$false
								[System.Windows.Forms.MessageBox]::Show("Download Firmware und Whitelist beendet.","FTP Firmware und Whitelist Download")
																	
								#PhoneWhitelist.msi installieren
								& 'C:\inetpub\ftproot\PhoneWhitelist.msi'
			}
							
		if ($webcheckbox.Checked) 
			{
				$outputBox.Text += "`r`nWeb Server wird installiert...."
				Start-Sleep -Milliseconds 300
				Import-Module WebAdministration -ErrorAction Stop
				Start-Sleep -Milliseconds 300
				$outputBox.Text += "`r`nChecke ob IIS Webserver berits installiert ist..."
				$iisService = Get-Service -ServiceName "W3SVC" -ErrorAction SilentlyContinue
				if (!$iisService) 
					{
						$outputBox.Text += "`r`nIIS Webserver ist noch nicht installiert."
						$outputBox.Text += "`r`nInstalliere IIS Webserver..."
						Add-WindowsFeature Web-Server
						Start-Sleep -Milliseconds 300
						$outputBox.Text += "fertig."
					}
				else 
					{
						$outputBox.Text += "`r`nIIS Webserver ist berits installiert!`r`n"
					}
				$webcheckbox.Checked=$false
			}
		
		if ($update1checkbox.Checked) 
			{ 
				$outputBox.Text += "`r`nWindows Updates nur laden aber nicht installieren wird geschrieben...."
				$WUSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
				$WUSettings.NotificationLevel=3
				$WUSettings.save()
				$outputBox.Text += "fertig."
			}
	
		if ($update2checkbox.Checked) 
			{ 
				$outputBox.Text += "`r`nWindows Updates laden und installieren wird geschrieben...."
				$WUSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
				$WUSettings.NotificationLevel=4
				$WUSettings.save()
				$outputBox.Text += "fertig."
			}
		
		if ($adminpwcheckbox.Checked) 
			{
				$outputBox.Text += "`r`nAdministrator Passwort läuft nicht ab wird geschrieben...."
				$user = [adsi]"WinNT://$env:computername/administrator"
				$user.UserFlags.value = $user.UserFlags.value -bor 0x10000
				$user.CommitChanges()
				$outputBox.Text += "fertig."
			}
		if ($rdppcheckbox.Checked) 
			{
				$outputBox.Text += "`r`nTerminsalserver: 2 Sitzung erlauben (RDP) wird geschrieben...."
				$name = "fSingleSessionPerUser"
				$pfad = "HKLM:SYSTEM\CurrentControlSet\Control\Terminal Server"
				if (-Not(Test-Path “$pfad”)) 
					{
						New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
					}
				Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
				$outputBox.Text += "fertig."
			}
	
		if ($fwcheckbox.Checked) 
			{
				if ($OSNAME -eq "Windows Server 2012") 
					{
						$outputBox.Text += "`r`nAlle $($SERVERVERSION) Dienste in der Firewall auf Profil Any setzen...."
						Get-NetFirewallRule -DisplayName "$($SERVERVERSION)*" | Set-NetFirewallRule -Profile Any 
						$outputBox.Text += "fertig."
					}
															
				if ($OSNAME -eq "Windows Server 2008") 
					{
						$outputBox.Text += "`r`nAlle $($SERVERVERSION) Dienste in der Firewall auf Profil Any setzen.... Betriebssystem ist Windows Server 2008 R2"
						# Netphone Dienste finden
						$langname = netsh advfirewall firewall show rule name=all | find "Rule Name:" | findstr /i "$($SERVERVERSION)*"
															
						# Der Dienst hat kein Netphone im Namen, deshalb hier extra Behandlung
						#Write-Host " Schreibe Regel für "IpPbxCDS"...." 	
						netsh advfirewall firewall set rule name="IpPbxCDS" new profile=any
											
						# Split Felder Rule Name: xxxxxxx
						foreach ($Netphonedienste in $langname ) 
							{
								$Netphonedienste = $Netphonedienste.split(":")

								# Trimm Leerstellen am Anfang
								foreach($Name in $Netphonedienste[1])
									{ 
										$name = $name.trim()
										#Info ausgeben
										#Write-Host " Schreibe Regel für $Name...." 
												
										# Schreibe neue Regeln
										netsh advfirewall firewall set rule name=$Name new profile=any
									}
							}
						$outputBox.Text += "fertig."
					}
			}
		
		if ($pnwcheckbox.Checked) 
		{	
			$outputBox.Text += "`r`nAktuelles Netzwerk auf Privat setzen...."
			Set-NetConnectionProfile -NetworkCategory Private
			$outputBox.Text += "fertig."
		}
	$outputBox.Text +=" `r`nalles erledigt.`r`n"						
	}
# Funktionen Ende für den TAB Windowsfeatures

# Funktionen Start für den TAB Systeminfos
function SQLAbfrageRC 	{
							$outputboxtab5.Text = "Starte Abfrage....`r`n"
							$DBName = "IpPbx"
							import-module sqlps -DisableNameChecking
							$Path = Set-Location SQLSERVER:\SQL\localhost
							$Instance = dir -Path $Path
							$RemoteConnector = Invoke-Sqlcmd -ServerInstance ("localhost\" + $Instance.InstanceName) -Query "SELECT * From dbo.GlobalConfigItems where subsection = 'RemoteConnector';" -Database $DBName
							$AccessConnector = Invoke-Sqlcmd -ServerInstance ("localhost\" + $Instance.InstanceName) -Query "SELECT * From dbo.GlobalConfigItems where subsection = 'Authentication'; " -Database $DBName
							
							$outputboxtab5.Text += "--------------------------------------------------`r`n"
							$outputboxtab5.Text += "RemoteConnectorEinstellungen`r`n"
							$outputboxtab5.Text += "--------------------------------------------------`r`n"
							
							foreach($item in $RemoteConnector)	
								{
									if($item.KeyName -eq "EnableRemoteAccess") { $outputboxtab5.Text += "Eingeschaltet:     = " + $item.ValueInt +"`r`n" }
									if($item.KeyName -eq "EndPoint") { $outputboxtab5.Text += "IP bzw. FQDN     = " + $item.ValueString +"`r`n" }
									if($item.KeyName -eq "Port") { $outputboxtab5.Text += "Port                     = " + $item.ValueInt +"`r`n" }
								}
							$outputboxtab5.Text += "------------------------------------------------`r`n"
							$outputboxtab5.Text += "AuthentifizierungsEinstellungen`r`n"
							$outputboxtab5.Text += "------------------------------------------------`r`n"
							
							foreach($item in $AccessConnector)
								{
									if($item.KeyName -eq "EndPoint") { $outputboxtab5.Text += "IP bzw. FQDN = " + $item.ValueString +"`r`n" }
									if($item.KeyName -eq "Port") { $outputboxtab5.Text += "Port                 = " + $item.ValueInt +"`r`n" }
								}
						}
function Portcheck 	{
						$outputboxtab5.Text = "Starte Abfrage....`r`n"
						$ComputerName = $env:computername
						$Ports = (9101, 16203)
						foreach ($Computer in $ComputerName) 
							{
								foreach ($Port in $Ports) 
									{
										$Socket = New-Object Net.Sockets.TcpClient
										$ErrorActionPreference = 'SilentlyContinue'
										$Socket.Connect($Computer, $Port)
										$ErrorActionPreference = 'Continue'
										if ($Socket.Connected) 
											{
												$outputboxtab5.Text += "----------------------------------------------------------------------------`r`n"
												$outputboxtab5.Text += " ${Computer}: Port $Port ist offen.`r`n"
												$outputboxtab5.Text += "----------------------------------------------------------------------------`r`n"
												$Socket.Close()
											}
										else 
											{
												$outputboxtab5.Text += "----------------------------------------------------------------------------`r`n"
												$outputboxtab5.Text += " ${Computer}: Port $Port ist geschlossen oder geblockt!`r`n"
												$outputboxtab5.Text += "----------------------------------------------------------------------------`r`n"
											}
										$Socket.Dispose()
										$Socket = $null
									}
							}
					}

function StatusNST 	{
						$outputboxtab5.Text = "Starte Abfrage....`r`n`r`n"
						$User = get-ippbxuser | ForEach-Object { add-member -MemberType NoteProperty -Name "DeviceList" -InputObject $_ -Value($adminfacade.GetCurrentUserDevices($_.UserID) ) -PassThru }
						$outputboxtab5.Text += "UserNr    Typ        Version            IP Adresse                MAC Adresse            OS                     `r`n"
						$outputboxtab5.Text += "---------------------------------------------------------------------------------------------------------------------------------------------------------`r`n"
						
						foreach ($detail in $User.devicelist)
							{
								$Infos = $User.Devicelist | foreach-object { get-ippbxuser -Userid $_.iUserID -Readonly } 
								foreach ($detail2 in $Infos)
									{
										$outputboxtab5.Text += $Infos.InternalNumbers
									}
								$outputboxtab5.Text += "          "
								$outputboxtab5.Text += $detail.strName +"   "
								$outputboxtab5.Text += $detail.strVersion +"      "
								$outputboxtab5.Text += $detail.strIPAddress +"     "
								$outputboxtab5.Text += $detail.strMACAddress +"     "
								$outputboxtab5.Text += $detail.strOS +"`r`n"
							}
					}

function SysStatus 	{
						$outputboxtab5.Text = "Starte Abfrage....`r`n"
						# Wert für Zeitserver IP-Telefone
						if (Test-Path "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options\PhoneConfig") 
							{
								$timeiptel=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options\PhoneConfig").GetValue('sntp-addr')
								if (!$timeiptel) 
									{
										$timeiptel = 'nicht gesetzt' 
									}
							}
						else 
							{
								$timeiptel = 'nicht gesetzt' 
							}
						# Auto Firmware Update IP Tel
						$autofwupdate=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options").GetValue("AutoFirmwareUpdate")
						if ($autofwupdate -eq 1) {$autofwupdate = 'ein'}
						else { $autofwupdate = 'aus' }
						
						# Pickup bei aktivem Gespräch und gesperrtem Zweitanruf
						$notiyon2call=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options").GetValue("CallNotificationOn2ndCallDisabled")
						if ($notiyon2call -eq 1) {$notiyon2call = 'ein' }
						else { $notiyon2call = 'aus' }

						# Gruppenruf bei nicht stören
						$groupdnd=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options").GetValue("SkipGroupCallMembersWithActiveDoNotDisturb")
						if ($groupdnd -eq 1) {$groupdnd = 'ein'}
						else { $groupdnd = 'aus' }
					
						# Gruppenruf bei nicht abwesend
						$groupaway=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options").GetValue("SkipGroupCallMembersWithActiveAway")
						if ($groupaway -eq 1) {$groupaway = 'ein'}
						else { $groupaway = 'aus' }
						
						# Gruppenruf in Anruferliste aus
						$groupcallinlist=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options").GetValue("WritePhoneCallListEntryOnGroupCall")
						if ($groupcallinlist -eq 1) { $groupcallinlist = 'ein' }
						else { $groupcallinlist = 'aus' }
						
						# Media Bridge
						$mediabridge=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options").GetValue("EnableTrunkCallEarlyMedia")
						if ($mediabridge -eq 1) { $mediabridge = 'ein' }
						else { $mediabridge = 'aus' }
						
						# Zeit Wiederanruf
						$wiederanruf=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options").GetValue("TransferringStateTimeout")
						if (!$wiederanruf) { $wiederanruf = 'Key nicht gesetzt' }
						
						# IMAP Abfragemechanismus
						if (Test-Path "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options") 
							{
								$fetchvmonly=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options").GetValue("FetchOnlyVoicemails")
								if ($fetchvmonly -eq 1) { $fetchvmonly = 'ein' }
								else { $fetchvmonly = 'aus' }
							}
						else {$fetchvmonly = 'nicht gesetzt' }
						
						# IMAP Login Plain
						if (Test-Path "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options") 
							{
								$vmplain=(get-item "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options").GetValue("UseAuthenticatePlain")
								if ($vmplain -eq 1) {$vmplain = 'Plain' }
								else { $vmplain = 'Login' }
							}
						else {$vmplain = 'nicht gesetzt' }
						
						# "Terminsalserver: 2 Sitzung erlauben (RDP)
						$rdp=(get-item "HKLM:SYSTEM\CurrentControlSet\Control\Terminal Server").GetValue("fSingleSessionPerUser")
						if ($rdp -eq 0) { $rdp = 'ein' }
						else { $rdp = 'aus' }

						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Zeitserver für IP-Telefone: "
						$outputboxtab5.Text += $timeiptel
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Auto Firmware Update IP Telefone: "
						$outputboxtab5.Text += $autofwupdate
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Pickup bei aktivem Gespräch und gesperrtem Zweitanruf: "
						$outputboxtab5.Text += $notiyon2call
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Gruppenruf bei nicht stören: "
						$outputboxtab5.Text += $groupdnd
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Gruppenruf bei abwesend: "
						$outputboxtab5.Text += $groupaway
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Gruppenruf in Anruferliste: "
						$outputboxtab5.Text += $groupcallinlist
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Media Bridge: "
						$outputboxtab5.Text += $mediabridge
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Zeit in Sekunden bis Wiederanruf: "
						$outputboxtab5.Text += $wiederanruf
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " IMAP Abfragemechanismus (Fetch only VoiceMails): "
						$outputboxtab5.Text += $fetchvmonly
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " IMAP Login Verhalten (Plain/Login): "
						$outputboxtab5.Text += $vmplain
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"
						$outputboxtab5.Text += " Terminsalserver: 2 Sitzung erlauben: "
						$outputboxtab5.Text += $rdp
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "----------------------------------------------------------------------------------------------------`r`n"

					}

function Userliste 	{ 
						$outputboxtab5.Text = "Starte Abfrage....`r`n"
						$outputboxtab5.Text += "`r`n"
						$outputboxtab5.Text += "------------------------------------------------------------------------------`r`n"
						$phonebook = $LibManager.GetUserPhoneBookEnum()
						Get-IpPbxGroupMember -GroupName "Jeder" -ReadOnly | ForEach-Object {
						
								$Status = [SWConfigDataClientLib.WSUserPhoneBook.PhonebookStatus]($phonebook.GetPBXPhoneBook($_.name,$true,$true ) | select -first 1 | select -ExpandProperty UserStatus)
								Add-Member -inputobject $_ -MemberType NoteProperty -Name Status -Value $Status -PassThru
							} | sort-object -property InternalNumbers | foreach-object {
							
									$outputboxtab5.Text += $_.Name +"`t"
									if ($_.Name.length -lt 10) { $outputboxtab5.Text += "`t"}
									$outputboxtab5.Text += $_.InternalNumbers +"`t"
									$outputboxtab5.Text += $Status 
									$outputboxtab5.Text += "`r`n"
									$outputboxtab5.Text += "------------------------------------------------------------------------------`r`n"
								}

					}

function Lizenzkey 	{	
														
															
						$outputboxtab5.Text = "Starte Abfrage....`r`n"
						Function GetWinKey 
							{ 
								$Hklm = 2147483650
								$Target = $env:COMPUTERNAME
								$RegPath = "Software\Microsoft\Windows NT\CurrentVersion"
								$DigitalID = "DigitalProductId"
								$Wmi = [WMIClass]"\\$Target\root\default:stdRegProv"
								$Object = $Wmi.GetBinaryValue($Hklm,$RegPath,$DigitalID)
								[Array]$DigitalIDvalue = $Object.uValue
								$ProductName = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "ProductName").ProductName
								$CurrentBuild = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "CurrentBuild").CurrentBuild
								$CurrentVersion = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "CurrentVersion").CurrentVersion
								$PROCESSOR_ARCHITECTURE = (Get-itemproperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "PROCESSOR_ARCHITECTURE").PROCESSOR_ARCHITECTURE
								$RegisteredOwner = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "RegisteredOwner").RegisteredOwner
								$USERDOMAIN = (Get-itemproperty -Path "HKCU:Volatile Environment" -Name "USERDOMAIN").USERDOMAIN
								$ProductID = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "ProductId").ProductId
								$DigiID = ConvertTokey $DigitalIDvalue
								$OSInfo = (Get-WmiObject "Win32_OperatingSystem" | Select Caption).Caption
								$CSDVersion = ""
								If($PROCESSOR_ARCHITECTURE -eq "x86")
									{
									$OsType = "32 Bit"
									}	
								Elseif($PROCESSOR_ARCHITECTURE -eq "AMD64")
									{
										$OsType = "64 Bit"
									}
								If($CurrentVersion -eq 6.1)
									{
										$CSDVersion = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "CSDVersion").CSDVersion
									}
								[string]$Value = "Infos zum Betriebssystem: `r`n" `
								+ "Windows-Edition       : $ProductName $OsType $CSDVersion `r`n" `
								+ "Windows-Build-ID      : $CurrentBuild `r`n" `
								+ "Windows-Versions-ID   : $CurrentVersion `r`n" `
								+ "Prozessor-Architektur : $PROCESSOR_ARCHITECTURE `r`n" `
								+ "Produkt-ID            : $ProductID `r`n" `
								+ "Windows-ProduktKey    : $DigiID `r`n`r`n" `
								+ "Registrierter Benutzer: $RegisteredOwner `r`n" `
								+ "Computername          : $USERDOMAIN `r`n"
								$Value
								$outputboxtab5.Text += "`r`n"
								$outputboxtab5.Text += "Windows-ProduktKey:   "
								$outputboxtab5.Text += $DigiID +"ID"
								$outputboxtab5.Text += "`r`n"
								$outputboxtab5.Text += "`r`n"
								$outputboxtab5.Text += "Der Key wurde auf dem Desktop als 'Windows_Key.txt' gespeichert."
								$Txtpath = "."
								If($CurrentVersion -ge 6.1)
									{
										New-Item -Path $HOME\Desktop -Name "Windows_Key.txt" -Value $Value -ItemType File -Force | Out-Null
										notepad.exe $HOME\Desktop\Windows_Key.txt
									}
							}

						Function ConvertToKey($Key) 
							{
								$Keyoffset = 52
								$IsWin8 = [int]($Key[66]/6) -band 1
								$HF7 = 0xF7
								$Key[66] = ($Key[66] -band $HF7) -bOr (($IsWin8 -band 2) * 4)
								$i = 24
								[String]$Chars = "BCDFGHJKMPQRTVWXY2346789"
								Do
									{
										$Cur = 0
										$X = 14
										Do
											{
												$Cur = $Cur * 256
												$Cur = $Key[$X + $Keyoffset] + $Cur
												$Key[$X + $Keyoffset] = [math]::Floor([double]($Cur/24))
												$Cur = $Cur % 24
												$X = $X – 1
											}
										While($X -ge 0)
										$i = $i- 1
										$KeyOutput = $Chars.SubString($Cur,1) + $KeyOutput
										$Last = $Cur
									}	
								While($i -ge 0)
								$Keypart1 = $KeyOutput.SubString(1,$Last)
								$Keypart2 = $KeyOutput.Substring(1,$KeyOutput.length-1)

								If($Last -eq 0 )
									{
										$KeyOutput = "N" + $Keypart2
									}
								Else
									{
										$KeyOutput = $Keypart2.Insert($Keypart2.IndexOf($Keypart1)+$Keypart1.length,"N")
									}

								$KeyProduct = ""
								For ($i = 0; $i -le 24; $i++) 
									{
										$KeyProduct = $KeyProduct + $KeyOutput[$i] 
										If ((($i+1) % 5 -eq 0) -and ($i -ne 0) -and ($i -le 20) ) 
											{
												$KeyProduct = $KeyProduct + "-"
											}
									}
								$KeyProduct
							}
								$CurrentVersion = (Get-itemproperty -Path "HKLM:Software\Microsoft\Windows NT\CurrentVersion" -Name "CurrentVersion").CurrentVersion
								GetWinKey
					}

Function Swyxwareversion 	{ 
								$outputBoxtab5.Text += " Starte Funktionen, bitte warten....`r`n"
								$outputboxtab5.Text += "`r`n"
								$VERSION = Get-IpPbxVersionInfo | ForEach-Object {$_.m_sProdVersion}
								switch ($VERSION)
								{
									"11.00.2821.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 11.00"}
									"11.00.2856.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 11.00.1.0"}
									"10.00.1741.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015"}
									"10.20.1812.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R2"}
									"10.30.2092.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R3"}
									"10.30.2114.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R3.1"}
									"10.30.2155.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015"}
									"10.30.2274.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R3.2.2"}
									"10.30.2429.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R30.5.0"}
									"10.40.2513.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R40.0.0"}
									"10.40.2540.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R40.1.0"}
									"10.40.2588.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R40.1.1"}
									"10.40.2685.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R40.2.0"}
									"10.40.2694.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2015 R40.3.0"}
									 "9.00.1268.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013"}
									 "9.10.1362.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013 R2"}
									 "9.20.1440.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013 R3"}
									 "9.30.1544.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013 R4"}
									 "9.40.1635.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013 R5"}
									 "9.50.1810.0" {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2013 R6"}
									 "8.00.0842"   {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2011"}
									 "8.01.0678"   {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxWare 2011 R2"}
									 "8.02.0882"   {$outputboxtab5.Text += " Die installierte Version lautet:`r`n`r`n SwyxIt! 2011 R2 Maintenance Pack 1"}
									 "8.02.0994"   {$outputboxtab5.Text += "Die installierte Version lautet:`r`n`r`n SwyxIt! 2011 R2 Maintenance Pack 2 "}
									default        {$outputboxtab5.Text += "`r`nDie installierte Version ist unbekannt!`r`n"}
								}

							}

Function Lizenzstatus	{ 
							$outputBoxtab5.Text += " Starte Funktionen, bitte warten....`r`n"
							$outputboxtab5.Text += "`r`n"
							$hr = 0
							$LICUSER = $Global:AdminFacade.GetTotalLicenseSummary([ref]$hr).EffectiveTotalUsers
							$outputboxtab5.Text += "Lizensierte User = $LICUSER`r`n`r`n"
							sleep 0,2
							$KONFIGUSER = (Get-IpPbxUser | where { $_.Locked -eq $false -and $_.ConferenceUser -eq $false }).count
							$outputboxtab5.Text += "Konfigurierte User = $KONFIGUSER`r`n`r`n"
							sleep 0,2
							$USERONLINE = ((Get-Counter "\\LOCALHOST\\SwyxServer\Logged in users").CounterSamples[0].CookedValue)
							$outputboxtab5.Text += "Angemeldet User = $USERONLINE`r`n"
						}
# Funktionen Ende für den TAB Systeminfos

# Funktionen Start für den TAB Namestasten
function Namenstasten 	{
							$outputBox.Text += " Starte Funktionen, bitte warten....`r`n"
							if ($1oncheckboxtab6.Checked) 
								{
									if (!$CopyNTListenBox.Text) 
										{		
											#$outputBox.Text +=  "Bitte erst einen Muster User eingeben!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte erst einen Muster User eingeben!","Fehler!")
											return
										}
										$outputBox.Text += "Schreibe die Tasten für User in der Gruppe " +$Comboboxtab6.SelectedItem +"`r`n"
										$defaultid= ""
										$defaultname = ""
										$defaultid = Get-IpPbxNumberOwner $CopyNTListenBox.Text
										$defaultname = $defaultid.Name
	  
										# Prüfen ob es die Rufnummer gibt.  
										if (!$defaultid) 
											{		
												#$outputBox.Text +=  "Für diese Rufnummer konnten keine Daten gelesen werden!`r`n"
												[System.Windows.Forms.MessageBox]::Show("Für diese Rufnummer konnten keine Daten gelesen werden!","Fehler!")
												return
											}
										
										if ($defaultid) 
											{ 
												$outputBox.Text += " Namenstasten von User " +$CopyNTListenBox.Text +" werden allen Usern der Gruppe " +$Comboboxtab6.SelectedItem +" geschrieben....`r`n"
												$SoureUser = Get-IpPbxUser -Username $defaultname -ReadOnly
												$Members = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem
												Foreach($Member in $Members) 
													{
														$outputBox.Text +=  " Schreibe Tasten für User " +$Member.Name +"...`r`n"
														$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
														for ($i=0; $i -le 80; $i++) 
															{
																Get-IpPbxSpeedDialKey -UserName $SoureUser.name -SpeedDialKeyId $i | Add-IpPbxSpeedDialKey -UserName $TargetUser.Name -SpeedDialKeyId $i
															}	
													}
												$outputBox.Text +=  " fertig.`r`n"
											}	
								}
															
															
							if ($2oncheckboxtab6.Checked) 
								{									
									if (!$2namcheckboxtab6.Checked -and !$2numcheckboxtab6.Checked) 
										{		
											#$outputBox.Text +=  "Bitte erst Name oder Nummer eingeben!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte erst Name oder Nummer eingeben!","Fehler!")
											return
										}
									if ($2namcheckboxtab6.Checked -and $2numcheckboxtab6.Checked) 
										{		
											#$outputBox.Text +=  "Bitte Name oder Nummer auswählen, nicht beides!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte Name oder Nummer auswählen, nicht beides!!","Fehler!")
											return
										}
									$outputBox.Text += "Schreibe die Tasten für User in der Gruppe " +$Comboboxtab6.SelectedItem +"`r`n"
									if ($2namcheckboxtab6.Checked) 
										{
											$Members = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property Name
											$Mitglieder = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property Name
											Foreach($Member in $Members) 
												{
													$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
													$i=0
													$outputBox.Text +=  " Schreibe Tasten für User " +$TargetUser.Name +"...`r`n"
													foreach($Mitglied in $Mitglieder) 
														{
															$ZielBenutzer = Get-IpPbxUser -UserName $Mitglied.Name -ReadOnly
															if($ZielBenutzer.name -ne $TargetUser.name) 
																{
																	if($ZielBenutzer.InternalNumbers -ne "")
																		{
																			Add-IpPbxSpeedDialKey -SpeedDialKey (New-IpPbxSpeedDialKey -Title $ZielBenutzer.name -Number $ZielBenutzer.InternalNumbers -DialImmediately:$true) -UserName $TargetUser.name -SpeedDialKeyId $i
																			$i=$i+1
																		}
																}	
													}
												}
											$outputBox.Text +=  " fertig.`r`n"
										}
							
										if ($2numcheckboxtab6.Checked) 
											{
												$Members = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property InternalNumbers
												$Mitglieder = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property InternalNumbers
												Foreach($Member in $Members) 
													{
														$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
														$i=0
														$outputBox.Text +=  " Schreibe Tasten für User " +$TargetUser.Name +"...`r`n"
														Foreach($Mitglied in $Mitglieder) 
															{
																$ZielBenutzer = Get-IpPbxUser -UserName $Mitglied.Name -ReadOnly
																if($ZielBenutzer.name -ne $TargetUser.name) 
																	{
																	if($ZielBenutzer.InternalNumbers -ne "")
																		{
																			Add-IpPbxSpeedDialKey -SpeedDialKey (New-IpPbxSpeedDialKey -Title $ZielBenutzer.name -Number $ZielBenutzer.InternalNumbers -DialImmediately:$true) -UserName $TargetUser.name -SpeedDialKeyId $i
																			$i=$i+1
																		}
																	}
															}
															
													}
												$outputBox.Text +=  " fertig.`r`n"
											}
																
								}
														
														
								if ($3oncheckboxtab6.Checked) 
									{									
										if (!$3namcheckboxtab6.Checked -and !$3numcheckboxtab6.Checked) 
											{		
												#$outputBox.Text +=  "Bitte erst Name oder Nummer eingeben!`r`n"
												[System.Windows.Forms.MessageBox]::Show("Bitte erst Name oder Nummer eingeben!","Fehler!")
												return
											}
										if ($3namcheckboxtab6.Checked -and $3numcheckboxtab6.Checked) 
											{		
												#$outputBox.Text +=  "Bitte Name oder Nummer auswählen, nicht beides!`r`n"
												[System.Windows.Forms.MessageBox]::Show("Bitte Name oder Nummer auswählen, nicht beides!!","Fehler!")
												return
											}
								
										$outputBox.Text += "Schreibe die Tasten für User in der Gruppe " +$Comboboxtab6.SelectedItem +"`r`n"
											if ($3namcheckboxtab6.Checked) 
												{
													$Members = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property Name
													$Mitglieder = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property Name
													Foreach($Member in $Members) 
														{
															$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
															$i=0
															$outputBox.Text +=  " Schreibe Tasten für User " +$TargetUser.Name +"...`r`n"
															Foreach($Mitglied in $Mitglieder) 
																{
																	$ZielBenutzer = Get-IpPbxUser -UserName $Mitglied.Name -ReadOnly
																	#deklariert die Variable $text1 mit dem Namen
																	$text1 = $ZielBenutzer.Name
																	if($text1 -match ",")
																		{
																			#Splittet den Namen nach "," auf
																			$text1 = $text1.Split(",") 
																			#Text vor erstem Komma, für Nachnamen $text2
																			$text2 = $text1[0] 
																			#Text nach erstem Komma, für Vornamen
																			$text1 = $text1[1]
																			#erster Buchstabe des Vornamen $text3, entfernt alles nach dem zweiten Zeichen (, und restliche Buchstaben des Vornamen)
																			$text3 = $text1.Remove(2)
																		}
																	#erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
																	$Label = $text2 + "," + $text3 + "." 
																	if($ZielBenutzer.name -ne $TargetUser.name) 
																		{
																			Add-IpPbxSpeedDialKey -SpeedDialKey (New-IpPbxSpeedDialKey -Title $Label -Number $ZielBenutzer.InternalNumbers -DialImmediately:$false) -UserName $TargetUser.name -SpeedDialKeyId $i
																			$i=$i+1
																		}
																}
															
														}
													$outputBox.Text +=  " fertig.`r`n"
												}
							
											if ($3numcheckboxtab6.Checked) 
												{
													$Members = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property InternalNumbers
													$Mitglieder = Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem -ReadOnly -AddDeviceInformation | Sort-Object -Property InternalNumbers
													Foreach($Member in $Members)
														{
															$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
															$i=0
															$outputBox.Text +=  " Schreibe Tasten für User " +$TargetUser.Name +"...`r`n"
															Foreach($Mitglied in $Mitglieder) 
																{
																	$ZielBenutzer = Get-IpPbxUser -UserName $Mitglied.Name -ReadOnly
																	#deklariert die Variable $text1 mit dem Namen
																	$text1 = $ZielBenutzer.Name
																	if($text1 -match ",")
																		{
																			#Splittet den Namen nach "," auf
																			$text1 = $text1.Split(",") 
																			#Text vor erstem Komma, für Nachnamen $text2
																			$text2 = $text1[0] 
																			#Text nach erstem Komma, für Vornamen
																			$text1 = $text1[1]
																			#erster Buchstabe des Vornamen $text3, entfernt alles nach dem zweiten Zeichen (, und restliche Buchstaben des Vornamen)
																			$text3 = $text1.Remove(2)
																		}
																	#erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
																	$Label = $text2 + "," + $text3 + "." 
																	if($ZielBenutzer.name -ne $TargetUser.name) 
																		{
																			Add-IpPbxSpeedDialKey -SpeedDialKey (New-IpPbxSpeedDialKey -Title $Label -Number $ZielBenutzer.InternalNumbers -DialImmediately:$false) -UserName $TargetUser.name -SpeedDialKeyId $i
																			$i=$i+1
																		}
																}
															
														}
													$outputBox.Text +=  " fertig.`r`n"
												}
																
									}
														
								if ($4oncheckboxtab6.Checked) 
									{									
										if (!$4namcheckboxtab6.Checked -and !$4numcheckboxtab6.Checked) 
											{		
												#$outputBox.Text +=  "Bitte erst Name oder Nummer eingeben!`r`n"
												[System.Windows.Forms.MessageBox]::Show("Bitte erst Name oder Nummer eingeben!","Fehler!")
												return
											}
										if ($4namcheckboxtab6.Checked -and $4numcheckboxtab6.Checked) 
											{		
												#$outputBox.Text +=  "Bitte Name oder Nummer auswählen, nicht beides!`r`n"
												[System.Windows.Forms.MessageBox]::Show("Bitte Name oder Nummer auswählen, nicht beides!!","Fehler!")
												return
											}

										if ($4numcheckboxtab6.Checked) {$sortieren = 'InternalNumbers'}
										if ($4namcheckboxtab6.Checked) {$sortieren = 'Name'}
										$GroupName = "Jeder" #max 80 Mitglieder
										$UserName = "1Dummy"
										$UserNumber = "99"
										$counter = 0
										$outputBox.Text += "Lege User 1 Dummy an und schreibe im Tasten für alle User...`r`n"
										# User 1Dummy mit Rufnummer 99 anlegen falls noch nicht vorhanden
										if (-Not(get-ippbxuser -Username 1Dummy)) 
											{
												New-IpPbxUser -Name $UserName | Add-IpPbxUser
												New-IpPbxInternalNumber -InternalNumber $UserNumber | Add-IpPbxInternalNumberToUser -UserName $UserName
											}

										#löscht alle Kurzwahltasten von $UserName
										Remove-IpPbxSpeedDialKey -UserName $UserName -Confirm:$false
										#setzt die Anzahl auf 80 Kurzwahltasteneinträge = max
										Set-IpPbxSpeedDialKeyCount -UserName $UserName -SpeedDialKeyCount 80

										#liest die Gruppenmitglieder ein, welche auf den Kurzwahltasten angezeigt werden sollen und sortiert diese alphabetisch.
										Get-IpPbxGroupMember -GroupName $GroupName -ReadOnly -AddDeviceInformation | Sort-Object -Property $sortieren | ForEach-Object {
										
												#liest die Variablen für den Usernamen ein
												$Users = Get-IpPbxUser -UserName $_.Name -ReadOnly -AddDeviceInformation 

												#liest die Variablen vom User "$UserName" für die Kurzwahl ein, beginnend mit ID 0
												$update = Get-IpPbxSpeedDialKey -UserName $UserName -SpeedDialKeyId $counter

												#deklariert die Durchwahl
												$update.DialNumber = $Users.InternalNumbers 

												#deklariert die Variable $text1 mit dem Namen
												$text1 = $Users.Name
				

												#wenn in der Namens-Variable ein Komma enhalten ist, dann aufsplitten
												if($text1 -match ",")
													{
														#Splittet den Namen nach "," auf
														$text1 = $text1.Split(",") 

														#Text vor erstem Komma, für Nachnamen $text2
														$text2 = $text1[0] 
				

														#Text nach erstem Komma, für Vornamen
														$text1 = $text1[1]
			   
														#erster Buchstabe des Vornamen $text3, entfernt alles nach dem zweiten Zeichen (, und restliche Buchstaben des Vornamen)
														$text3 = $text1.Remove(2)
			   
														#erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
														$update.Label = $text2 + "," + $text3 + "."  
				
													}

												#wenn im Namen kein Komma vorkommt dann .... 
												else
													{
														#erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
														$update.Label = $Users.Name + " " 
													}
												if ( !($update.DialNumber -eq "")) 
													{
														#zeigt den Inhahalt der Kurzwahlübersicht in der Konsole an, nur Info
														$outputBox.Text += $update.Label +"`r`n"

														#updated die Kurzwahlübersicht des Users $UserName
														update-IpPbxSpeedDialKey -UserName $UserName -SpeedDialKey $update 
													}
														#zählt die ID um 1 hoch
														$counter = $counter + 1 
													
											}
										$outputBox.Text += "fertig.`r`n"
									}
															
							if ($5oncheckboxtab6.Checked) 
								{
									$outputBox.Text += "Lösche alle Tasten der User in Gruppe " +$Comboboxtab6.SelectedItem +"`r`n"
									Get-IpPbxGroupMember -GroupName $Comboboxtab6.SelectedItem | ForEach-Object {
									
											$outputBox.Text +=  $_.Name +"`r`n"
											Remove-IpPbxSpeedDialKey -UserName $_.Name -Confirm:$false
										}
							
									$outputBox.Text += "fertig.`r`n"
							
								}
							
															
															
							$outputBox.Text +=  " Alles erledigt.`r`n"
						}
# Funktionen Ende für den TAB Namestasten

# Funktionen Start für den TAB Netphone RegKeys
function RegKeys {	
					if (($1oncheckboxtab7.Checked -and $1offcheckboxtab7.Checked) -or
						($2oncheckboxtab7.Checked -and $2offcheckboxtab7.Checked) -or
						($3oncheckboxtab7.Checked -and $3offcheckboxtab7.Checked) -or
						($4oncheckboxtab7.Checked -and $4offcheckboxtab7.Checked) -or
						($5oncheckboxtab7.Checked -and $5offcheckboxtab7.Checked) -or
						($6oncheckboxtab7.Checked -and $6offcheckboxtab7.Checked) -or
						($7oncheckboxtab7.Checked -and $7offcheckboxtab7.Checked) -or
						($8oncheckboxtab7.Checked -and $8offcheckboxtab7.Checked) -or
						($9oncheckboxtab7.Checked -and $9offcheckboxtab7.Checked))
										{									
											#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
											return
										}						
					
					
					$outputBox.Text += "Starte Funktionen...."
					if ($1oncheckboxtab7.Checked) { $outputBox.Text += "`r`nPickup bei aktivem Gespräch und gesperrtem Zweitanruf 'ein' wird geschrieben...."
															$name = "CallNotificationOn2ndCallDisabled"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
															$outputBox.Text += "fertig."
															}
															
					if ($1offcheckboxtab7.Checked) { $outputBox.Text += "`r`nPickup bei aktivem Gespräch und gesperrtem Zweitanruf 'aus' wird geschrieben...."
															$name = "CallNotificationOn2ndCallDisabled"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
															$outputBox.Text += "fertig."
													}		
					if ($2oncheckboxtab7.Checked) { $outputBox.Text += "`r`nGruppenruf bei nicht stören/abwesend 'ein' wird geschrieben...."
															$namea = "SkipGroupCallMembersWithActiveDoNotDisturb"
															$nameb = "SkipGroupCallMembersWithActiveAway"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $namea -Type Dword -Value “1”
															Set-ItemProperty -Path “$pfad” -Name $nameb -Type Dword -Value “1”
															$outputBox.Text += "fertig."
													}		
					if ($2offcheckboxtab7.Checked) { $outputBox.Text += "`r`nGruppenruf bei nicht stören/abwesend 'aus' wird geschrieben...."
															$namea = "SkipGroupCallMembersWithActiveDoNotDisturb"
															$nameb = "SkipGroupCallMembersWithActiveAway"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $namea -Type Dword -Value “0”
															Set-ItemProperty -Path “$pfad” -Name $nameb -Type Dword -Value “0”
															$outputBox.Text += "fertig."
													}		
					if ($3oncheckboxtab7.Checked) { $outputBox.Text += "`r`nGruppenrufe in Anruferliste 'ein' wird geschrieben...."
															$name = "WritePhoneCallListEntryOnGroupCall"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
															$outputBox.Text += "fertig."
													}		
					if ($3offcheckboxtab7.Checked) { $outputBox.Text += "`r`nGruppenrufe in Anruferliste 'aus' wird geschrieben...."
															$name = "WritePhoneCallListEntryOnGroupCall"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
															$outputBox.Text += "fertig."
													}
					if ($4oncheckboxtab7.Checked) { $outputBox.Text += "`r`nMedia Bridge wird eingeschaltet...."
															$name = "EnableTrunkCallEarlyMedia"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
															$outputBox.Text += "fertig."
													}
					if ($4offcheckboxtab7.Checked) { $outputBox.Text += "`r`nMedia Bridge wird ausgeschaltet...."
															$name = "EnableTrunkCallEarlyMedia"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxSrv\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
															$outputBox.Text += "fertig."
													}
					if ($5oncheckboxtab7.Checked) { $outputBox.Text += "`r`nZeit bis Wiederanruf bei Blindtransfer am IP Tel auf wird geschrieben...."
															$name = "TransferringStateTimeout"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value $ZeitWAListenBox.Text
															$outputBox.Text += "fertig."
													}
					if ($5offcheckboxtab7.Checked) { $outputBox.Text += "`r`nZeit bis Wiederanruf bei Blindtransfer am IP Tel auf wird gelöscht...."
															$name = "TransferringStateTimeout"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “”
															$outputBox.Text += "fertig."
													}		
					if ($6oncheckboxtab7.Checked) { $outputBox.Text += "`r`nZeitserver für IPTels auf $NtpListenBox.Text wird geschrieben...."
															$name = "sntp-addr"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options\PhoneConfig"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Value $NtpListenBox.Text
															$outputBox.Text += "fertig."										
													}		
					if ($6offcheckboxtab7.Checked) { $outputBox.Text += "`r`nZeitserver für IPTels wird gelöscht...."
															$name = "sntp-addr"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\PhoneMgr\CurrentVersion\Options\PhoneConfig"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “”
															$outputBox.Text += "fertig."			
													}		
					if ($7oncheckboxtab7.Checked) { $outputBox.Text += "`r`nAbfragemechanismus bei VoicemailFernabfrage auch auf (X_Header) schauen wird geschrieben...."
															$name = "FetchOnlyVoicemails"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
															$outputBox.Text += "fertig."										
													}
					if ($7offcheckboxtab7.Checked) { $outputBox.Text += "`r`nAbfragemechanismus bei VoicemailFernabfrage auch auf (X_Header) schauen wird geschrieben...."
															$name = "FetchOnlyVoicemails"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
															$outputBox.Text += "fertig."	
													}
					if ($8oncheckboxtab7.Checked) { $outputBox.Text += "`r`nLogin bei IMAP4 Abfrage (nicht Plain verwenden) wird geschrieben...."
															$name = "UseAuthenticatePlain"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “1”
															$outputBox.Text += "fertig."			
													}
					if ($8offcheckboxtab7.Checked) { $outputBox.Text += "`r`nLogin bei IMAP4 Abfrage (Plain verwenden) wird geschrieben...."
															$name = "UseAuthenticatePlain"
															$pfad = "HKLM:SOFTWARE\Wow6432Node\$BACKUPPATH\IpPbxIMAP4\CurrentVersion\Options"
															if (-Not(Test-Path “$pfad”)) {
																New-Item -Path “$($pfad.TrimEnd($pfad.Split(‘\’)[-1]))” -Name “$($pfad.Split(‘\’)[-1])” -Force | Out-Null
																}
															Set-ItemProperty -Path “$pfad” -Name $name -Type Dword -Value “0”
															$outputBox.Text += "fertig."
													}
					if ($9offcheckboxtab7.Checked) { $outputBox.Text += "`r`nIpPbx Dienste werden neu gestartet, dauert ca. 1 Minute, bitte warten...."
													 $Command = "C:\Program Files (x86)\$SERVERVERSION\IpPbxConfig.exe"
													 $Parms = "/stop -y"
													 $Prms = $Parms.Split(" ")
													 & "$Command" $Prms 
													 $outputBox.Text += "`r`nDienste gestoppt, warte 2 Sekunen bis zum Neustart der Dienste...."
													 sleep 2
													 $outputBox.Text += "`r`nIpPbx Dienste werden wieder gestartet, bitte warten...."
													 $Parms1 = "/start -y"
													 $Prms1 = $Parms1.Split(" ")
													 & "$Command" $Prms1 
													 $outputBox.Text += "fertig."
													}
				}

# Funktionen Ende für den TAB Netphone RegKeys

# Funktionen Start für den TAB Backup / Restore
function Backup {	
					if (!$1oncheckboxtab8.Checked -and !$2oncheckboxtab8.Checked -and !$3oncheckboxtab8.Checked) 
						{		
							#$outputBox.Text +=  "`r`nBitte erst ein Backup Verzeichnis auswählen!`r`n"
							[System.Windows.Forms.MessageBox]::Show("Bitte erst ein Backup Verzeichnis auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Information)
							return					
						}
					if (($1oncheckboxtab8.Checked -and $2oncheckboxtab8.Checked) -or ($2oncheckboxtab8.Checked -and $3oncheckboxtab8.Checked) -or ($1oncheckboxtab8.Checked -and $3oncheckboxtab8.Checked)) 
						{		
							#$outputBox.Text +=  "`r`nBitte nur ein Backup Verzeichnis auswählen!`r`n"
							[System.Windows.Forms.MessageBox]::Show("Bitte nur ein Backup Verzeichnis auswählen!.","Fehler!")
							return
						}
								
					$Date = Get-Date -Format dd.MM.yyyy-HH-mm-ss
					$Pfad1 = "/backup /file C:\ProgramData\$BACKUPPATH\Backup\IpPbxBackup-$Date.dat" 
					$Pfad2 = "/backup /file C:\Backup\Backups\OpenAdmin\IpPbxBackup-$Date.dat"
					$Pfad3 = "/backup /file D:\Backup\OpenAdmin\IpPbxBackup-$Date.dat"
					if ($1oncheckboxtab8.Checked) 
						{
							$Parms = $Pfad1 
							$DatabaseName = "C:\ProgramData\$BACKUPPATH\Backup\IpPbxBackup-$Date.dat"
						}
					if ($2oncheckboxtab8.Checked) 
						{
							# Pfad anlegen wenn nicht vorhanden
							if (!(Test-Path -path C:\Backup\Backups\OpenAdmin -ErrorAction SilentlyContinue )) 
								{
									New-Item -Path C:\Backup\Backups\OpenAdmin -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
								}	
							$Parms = $Pfad2
							$DatabaseName = "C:\Backup\Backups\OpenAdmin\IpPbxBackup-$Date.dat"
						}
					if ($3oncheckboxtab8.Checked) 
						{
							# Prüfe Laufwerk D:
							$SD = (Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DeviceID -eq "D:"})
							# Wenn $LW ein Wechseldatenträger ist erzeuge ein Backup
							if (!($SD.DriveType -eq 2))
								{	
									[System.Windows.Forms.MessageBox]::Show("Laufwerk D: ist keine SD-Karte. Abbruch!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Error)
									return					
								}
							# Pfad anlegen wenn nicht vorhanden
							if (!(Test-Path -path D:\Backup\OpenAdmin\ -ErrorAction SilentlyContinue )) 
								{
									New-Item -Path D:\Backup\OpenAdmin\ -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
								}	
							$Parms = $Pfad3
							$DatabaseName = "D:\Backup\OpenAdmin\IpPbxBackup-$Date.dat"
						}
					$outputBox.Text += "`r`nStarte Backup...."
					$outputBox.Text += "`r`n$DatabaseName`r`n"
					$Command = "C:\Program Files (x86)\$SERVERVERSION\IpPbxConfig.exe"
					$Prms = $Parms.Split(" ")
					& "$Command" $Prms
					$outputBox.Text += "fertig.`r`n"
				}

Function SelectFileDialog()	{
								[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
							
								$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
								$OpenFileDialog.initialDirectory = "C:\ProgramData\$BACKUPPATH\Backup"
								$OpenFileDialog.filter = "DAT (*.dat)| *.dat"
								$OpenFileDialog.ShowDialog() | Out-Null
								$OpenFileDialog.filename
								$ListenBox1tab8.Text = $OpenFileDialog.filename
							}

function WriteEach-Object()	{ 
								param
									(
										[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
										[object[]]$inputs
									)		  
								begin { $outputBox.Text += "" } 
								process { $inputs | foreach { $outputBox.Text += $outputBox.AppendText($_) } } 
								end { $outputBox.Text += $outputBox.AppendText("`r`n") } 
							}

function Restore 	{	
						if ($ListenBox1tab8.Text -eq "") 
							{	
								[System.Windows.Forms.MessageBox]::Show("Bitte erst ein Backup Datei auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
								return					
							}
						if (-Not($ListenBox1tab8.Text -like "*.dat")) 
							{	
								[System.Windows.Forms.MessageBox]::Show("Nur .dat Dateien für ein Restore möglich!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
								return					
							}
						
						#Frage erst ob Restore durchgefürt werden soll
						$Frage = [System.Windows.Forms.MessageBox]::Show("Achtung: Alle Dienste werden neu gestartet!" , "Datenbank Restore starten?" , 4 , [System.Windows.Forms.MessageBoxIcon]::Question)
						switch  ($Frage) 
							{
								'Yes' { 
										$outputBox.Text += "Starte Datenbank Restore....`r`n"
										$Command = "C:\Program Files (x86)\$SERVERVERSION\IpPbxConfig.exe"
										$outputBox.Text +=  "$($SERVERVERSION) Dienste werden angehalten....`r`n"
										#$outputBox.Text += &$Command '/stop' '/y' | Out-String
										&$Command '/stop' '/y' | WriteEach-Object
										$outputBox.Text +=  "Datenbank " +$ListenBox1tab8.Text +" wird wieder hergestellt....`r`n"
										#$outputBox.Text += &$command /restore -file $ListenBox1tab8.Text /y | Out-String
										&$command /restore -file $ListenBox1tab8.Text /y | WriteEach-Object
										$outputBox.Text +=  "$($SERVERVERSION) Dienste werden gestartet....`r`n"
										#$outputBox.Text += &$Command '/start' | Out-String
										&$Command '/start' | WriteEach-Object
										$outputBox.Text += "fertig.`r`n"
									}
								'No' { 
										$outputBox.Text = ""
										$outputBox.ForeColor = "red"
										$outputBox.Text += "`r`nDatenbank Restore abgebrochen!`r`n"
										return 
									}
							}	
					}
					
# Funktionen Ende für den TAB Backup / Restore

# Funktionen Start für den TAB  Kopierfunktionen
function Faxsetup 	{
						## Faxdaten schreiben
						$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem
						Foreach ($Member in $Members) 
							{
								$outputBox.Text +=  "Schreibe Faxdaten für User "
								$outputBox.Text +=  $Member.Name +"`r`n"
							
								$FaxData = Get-IpPbxFaxClientConfig -UserName $Member.Name
								$UserData = Get-IpPbxUser -UserID $FaxData.UserID -AddBuiltInUser -ReadOnly

								$FaxData.Fax = $UserData.PublicFaxNumbers
								$FaxData.StationID = $UserData.PublicFaxNumbers
								$FaxData.Company = $FaxFirmaListenBox.Text
								$FaxData.Address = $FaxAnschriftListenBox.Text
								$FaxData.Department = $FaxAbteilungListenBox.Text
								$FaxData.Name = $member.Name
								$FaxData.Email = $member.EMailAddr
								$FaxData.Phone = $UserData.PublicNumbers
								
								Set-IpPbxFaxClientConfig -ConfigData $FaxData
							}

						$outputBox.Text +=  " Fertig.`r`n"
					}

function Kopierfunktionen	{
								$outputBox.Text += "Starte Funktionen....`r`n"
								if ($2oncheckboxtab9.Checked -and $3oncheckboxtab9.Checked) 
									{		
										#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
										[System.Windows.Forms.MessageBox]::Show("Bitte entweder kopieren oder löschen auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
										return
									}
												
								# Callrouting Scripte
								if ($1oncheckboxtab9.Checked) 
									{
										$outputBox.Text += "`r`nCallrouting Scripte werden kopiert....`r`n"
										$defaultid = Get-IpPbxNumberOwner $CopyCRListenBox.Text
										$defaultname = $defaultid.Name
										$SoureUser = Get-IpPbxUser -UserName $defaultname -ReadOnly
										$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem 
										Foreach($Member in $Members)
											{
												$TargetUser = Get-IpPbxUser -UserName $Member.Name -ReadOnly
												if($defaultname -ne $TargetUser) 
													{
														$outputBox.Text +=  "Schreibe Callrouting für User "
														$outputBox.Text +=  $Member.Name +"`r`n"
														Copy-IpPbxUserCallRouting -SourceUserEntry $SoureUser -TargetUserEntry $TargetUser -Overwrite -confirm:$false
													}
											}
										$outputBox.Text += "`r`n...fertig.`r`n"	
									}	


									# Leitungstasten kopieren
									if ($2oncheckboxtab9.Checked) 
										{ 
											$outputBox.Text += "`r`nLeitungstasten werden kopiert....`r`n"
											$defaultid = Get-IpPbxNumberOwner $CopyLKListenBox.Text
											$defaultname = $defaultid.Name
											$SoureUser = Get-IpPbxUser -Username $defaultname -ReadOnly
											$SoureUserData = Get-IpPbxUserData -Username $defaultname 
											$SourceUserNrOfLinekeys = $SoureUserData.m_iNumberOfLineKeys
											$NrOfLinekeys = $SourceUserNrOfLinekeys-1
																	
											$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem 
											Foreach($Member in $Members)
												{
													# Musteruser nicht neu schreiben
													if ($Member.Name -ne $defaultname)
														{
															$u = get-IpPbxUserData -username $Member.Name
															$outputBox.Text +=  "Schreibe Leitungstasten für User "
															$outputBox.Text +=  $Member.Name +"`r`n"
															$a = Get-IpPbxUser -Username $Member.Name -ReadOnly
															$InternalNumbera = $a.InternalNumbers
															$u.m_iNumberOfLineKeys = $SourceUserNrOfLinekeys
															$u.m_LineKeySettings = $SoureUserData.m_LineKeySettings
															for ($i=0; $i -le $NrOfLinekeys; $i++) 
																{
																	$u.m_LineKeySettings[$i].ExtensionOutGoing = $InternalNumbera 
																}
															Get-IpPbxUser -username $Member.Name | Set-IpPbxUserData -Userdata $u
														}
												}
													$outputBox.Text += "`r`n...fertig.`r`n"	
										}				
															
									# Leitungstasten löschen
									if ($3oncheckboxtab9.Checked) 
										{	
											$outputBox.Text += "`r`nLeitungstasten werden gelöscht....`r`n"
											$NumberOfLineKeys = 3
												
											# Get all user entries (objects) from the group
											$users = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem -ErrorAction Stop

											$users | ForEach-Object {
											
														$currentUser = $_
														$outputBox.Text +=  "`r`n" +"Prüfe User $($currentUser.Name)...`r`n"

														# Get UserData    
														$userData = Get-IpPbxUserData -UserEntry $currentUser
									
														# Set number of line keys if not equal
														$outputBox.Text +=  "$($currentUser.Name) hat $($userData.m_iNumberOfLineKeys) Leitungstasten. Schreibe neue....`r`n"
														$userData.m_iNumberOfLineKeys = $NumberOfLineKeys
									
														# Generate a new empty line key array with the size of $NumberOfLineKeys
														$newLineKeyList = New-Object CLineKeySetting[] $NumberOfLineKeys

														$outputBox.Text +=  "Überschreibe die Einstellungen.... `r`n"

														# Copy existing lines into the new line key array
														# If there are more existing lines then the array
														# can take we will ignore these lines
														for ($i = 0; $i -lt $NumberOfLineKeys; $i++)
															{
																$newLineKeyList[$i] = $userData.m_LineKeySettings[$i]
															}
														$outputBox.Text +=  "Kopieren der Leitungstasten fertig.`r`n"
									   
														# If the array is not completely filled we
														# have to add new empty lines with default values
														for ($i = 0; $i -lt $newLineKeyList.Count; $i++)
															{
																$newLineKeyList[$i] = New-Object CLineKeySetting
																$newLineKeyList[$i].WrapUpTimeout = 120
																$userData.m_LineKeySettings[$i].Title = ""
																$userData.m_LineKeySettings[$i].ExtensionInComing = ""
																$userData.m_LineKeySettings[$i].ExtensionOutGoing = ""
															}          
														$outputBox.Text +=  "Leitungstasten Einstellungen neu geschrieben.`r`n"

														# Overwrite the old list with the new one
														$userData.m_LineKeySettings = $newLineKeyList
										
														# Save UserData
														Set-IpPbxUserData -UserData $userData -UserEntry $currentUser
														$outputBox.Text +=  "User '$($currentUser.Name)' erfolgreich mit $NumberOfLineKeys leeren Leitungstasten neu geschrieben.`r`n"    
													} 					
												$outputBox.Text += "`r`n...fertig.`r`n"	
										}
															
									if ($4oncheckboxtab9.Checked -and $5oncheckboxtab9.Checked) 
										{		
											#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte entweder erstellen oder löschen auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
											return
										}
															
									# Client Zertifikat erstellen
									if ($4oncheckboxtab9.Checked) 
										{
											$outputBox.Text += "`r`nClient Zertifikate werden erstellt....`r`n"
																								
											# Abfrage nach dem RootPassword
											$cred = Get-Credential -Username "Stammzertifikat Passwort" -Message "Bitte das Stammzertifikat Passwort eingeben"
											# Zertifikatepasswort umwandeln von Klartext in verschlüsselten String
											#$RootPassword = $cred.GetNetworkCredential().Password
											$RootPassword = (ConvertTo-SecureString -String $cred.GetNetworkCredential().Password -AsPlainText -Force)
											Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem | ForEach-Object {
											
													$userEntry = $_
													# Status Output
													#$outputBox.Text += $RootPassword
													$outputBox.Text += "Schreibe neues Zertifikat für " +$($userEntry.Name) +"....`r`n"
													
													try {
															New-IpPbxClientCertificate -UserEntry $userEntry -RootPassword $RootPassword -Confirm:$false -ErrorAction Stop
														}
													catch 
														{
															$ErrorMessage = "Falsches Zertifikat Passwort!"
															$caption = "Fehler!"
															if ($_.Exception.Message | Select-String -InputObject {$_} -Pattern "Netzwerkkennwort")
																{
																	[System.Windows.Forms.MessageBox]::Show($ErrorMessage, $caption)
																	break 
																}
														}
												}
											$outputBox.Text += "`r`n...fertig.`r`n"	
										}
															
									# Client Zertifikat löschen
									if ($5oncheckboxtab9.Checked) 
										{ 
											$outputBox.Text += "`r`nClient Zertifikate werden gelöscht....`r`n"
											Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem | ForEach-Object {
											
													$userEntry = $_
													# Status Output
													$outputBox.Text += "Lösche Zertifikat für $($userEntry.Name)....`r`n"
													Remove-IpPbxClientCertificate -UserEntry $userEntry -Confirm:$false -ErrorAction Stop
												}
											$outputBox.Text += "`r`n...fertig.`r`n"	
										}
										
									# Aufmerksamkeitston für signalisierte Rufe ein
									if ($7oncheckboxtab9.Checked -and $7oncheckboxtab9.Checked) 
										{		
											#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
											return
										}						
									
									if ($7oncheckboxtab9.Checked) 
										{
											$outputBox.Text += "`r`nAufmerksamkeitston für signalisierte Rufe (Übernahme) ein wird geschrieben....`r`n"
											$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem 
											Foreach($Member in $Members) 
												{
													$u = get-IpPbxUserData -username $Member.Name
													$u.m_bSignalGroupNotificationCall = 1
													$outputBox.Text += "Schreibe User $($Member.Name)....`r`n"
													Get-IpPbxUser -username $Member.Name | Set-IpPbxUserData -Userdata $u 
												}
											$outputBox.Text += "`r`n...fertig.`r`n"
										}
																					
									# Aufmerksamkeitston für signalisierte Rufe aus
									if ($7offcheckboxtab9.Checked) 
										{ 
											$outputBox.Text += "`r`nAufmerksamkeitston für signalisierte Rufe (Übernahme) aus wird geschrieben....`r`n"
											$Members = Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem 
											Foreach($Member in $Members) 
												{
													$u = get-IpPbxUserData -username $Member.Name
													$u.m_bSignalGroupNotificationCall = 0
													$outputBox.Text += "Schreibe User $($Member.Name)....`r`n"
													Get-IpPbxUser -username $Member.Name | Set-IpPbxUserData -Userdata $u
												}
											$outputBox.Text += "`r`n...fertig.`r`n"
										}
																							
																							
									# Bei der nächsten Anmeldung das Kennwort ändern ein
									if ($6oncheckboxtab9.Checked -and $6oncheckboxtab9.Checked) 
										{		
											#$outputBox.Text +=  "Bitte entweder kopieren oder löschen auswählen!`r`n"
											[System.Windows.Forms.MessageBox]::Show("Bitte entweder ein oder aus auswählen!","Fehler!",0,[System.Windows.Forms.MessageBoxIcon]::Warning)
											return
										}			
									
									if ($6oncheckboxtab9.Checked)
										{
											$outputBox.Text += "`r`nBei der nächsten Anmeldung das Kennwort ändern ein....`r`n"
											Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem  | ForEach-Object {
											
													$_.PasswordExpired = $true; $outputBox.Text += "Schreibe User $($_.Name)....`r`n"; $_	} | Update-IpPbxUser
													$outputBox.Text += "`r`n...fertig.`r`n"
												}
																							
																							
									# Bei der nächsten Anmeldung das Kennwort ändern aus
									if ($6offcheckboxtab9.Checked) 
										{
											$outputBox.Text += "`r`nBei der nächsten Anmeldung das Kennwort ändern aus....`r`n"
																
											Get-IpPbxGroupMember -GroupName $comboBoxtab9.SelectedItem   | ForEach-Object { $_.PasswordExpired = $false; $outputBox.Text += "Schreibe User $($_.Name)....`r`n"; $_ } | Update-IpPbxUser
											$outputBox.Text += "`r`n...fertig.`r`n"
										}
							}

# Funktionenen Ende für den TAB  Kopierfunktionen

# Funktion Start Clear 
function ClearTab1 {	$SecCalloffcheckbox.Checked=$false
						$SecCalloncheckbox.Checked=$false
						$MinClientoncheckbox.Checked=$false
						$MinClientoffcheckbox.Checked=$false
						$3oncheckbox.Checked=$false
						$3offcheckbox.Checked=$false
						$4oncheckbox.Checked=$false
						$4offcheckbox.Checked=$false
						$5oncheckbox.Checked=$false
						$5offcheckbox.Checked=$false
						$6oncheckbox.Checked=$false
						$6offcheckbox.Checked=$false
						$7oncheckbox.Checked=$false
						$7offcheckbox.Checked=$false
						$8oncheckbox.Checked=$false
						$8offcheckbox.Checked=$false
						$9oncheckbox.Checked=$false
						$9offcheckbox.Checked=$false
						$10oncheckbox.Checked=$false
						$10offcheckbox.Checked=$false
						$11oncheckbox.Checked=$false
						$11offcheckbox.Checked=$false
						$12oncheckbox.Checked=$false
						$12offcheckbox.Checked=$false
						$13oncheckbox.Checked=$false
						$13offcheckbox.Checked=$false
						$14oncheckbox.Checked=$false
						$14offcheckbox.Checked=$false
						$wwcheckbox.Checked=$false
						$alcheckbox.Checked=$false
						$bcticheckbox.Checked=$false
						$ccticheckbox.Checked=$false
						$ecticheckbox.Checked=$false
						$altxcheckbox.Checked=$false
						$vmcheckbox.Checked=$false
						$vmmcheckbox.Checked=$false
						$ListenBox1.Text = "90"
						$ListenBox2.Text = "90"
					}
function ClearTab2 	{	$iumloncheckbox.Checked=$false
						$iumloffcheckbox.Checked=$false
						$bumloncheckbox.Checked=$false
						$bumloffcheckbox.Checked=$false
						$tumloncheckbox.Checked=$false
						$tumloffcheckbox.Checked=$false
						$timecheckbox.Checked=$false
						$umltarget1.Checked=$false
						$umltarget2.Checked=$false
						$umltarget3.Checked=$false
						$ZeitBox.Text = "20"
						$ListenBox5.Text = "100"
						$ListenBox4.Text = "100"
						$ListenBox3.Text = "100"
						}
function ClearTab3 	{	$KlingelListenBox.Text = "3"
						$autanoncheckbox.Checked=$false
						$autanoffcheckbox.Checked=$false
						$autfwoncheckbox.Checked=$false
						$autfwoffcheckbox.Checked=$false
						$maccheckbox.Checked=$false
						$1xpincheckbox.Checked=$false
						$2xpincheckbox.Checked=$false
						$klingelcheckbox.Checked=$false
						$1oncheckboxtab3.Checked=$false
						$CopyFTListenBox.Text = "99"
					}
function ClearTab4 	{	$firmwarecheckbox.Checked=$false
						$telnetcheckbox.Checked=$false
						$ftpcheckbox.Checked=$false
						$webcheckbox.Checked=$false
						$snipcheckbox.Checked=$false
						$update1checkbox.Checked=$false
						$update2checkbox.Checked=$false
						$adminpwcheckbox.Checked=$false
						$rdppcheckbox.Checked=$false
						$fwcheckbox.Checked=$false
						$pnwcheckbox.Checked=$false
					}
function ClearTab6 	{	$1oncheckboxtab6.Checked=$false
						$CopyNTListenBox.Text = "99"
						$2namcheckboxtab6.Checked=$false
						$2numcheckboxtab6.Checked=$false
						$2oncheckboxtab6.Checked=$false
						$3oncheckboxtab6.Checked=$false
						$3namcheckboxtab6.Checked=$false
						$3numcheckboxtab6.Checked=$false
						$4oncheckboxtab6.Checked=$false
						$4namcheckboxtab6.Checked=$false
						$4numcheckboxtab6.Checked=$false
						$5oncheckboxtab6.Checked=$false
					}
function ClearTab7 	{	$1oncheckboxtab7.Checked=$false
						$1offcheckboxtab7.Checked=$false
						$2oncheckboxtab7.Checked=$false
						$2offcheckboxtab7.Checked=$false
						$3oncheckboxtab7.Checked=$false
						$3offcheckboxtab7.Checked=$false
						$4oncheckboxtab7.Checked=$false
						$4offcheckboxtab7.Checked=$false
						$5oncheckboxtab7.Checked=$false
						$5offcheckboxtab7.Checked=$false
						$6oncheckboxtab7.Checked=$false
						$6offcheckboxtab7.Checked=$false
						$7oncheckboxtab7.Checked=$false
						$7offcheckboxtab7.Checked=$false
						$8oncheckboxtab7.Checked=$false
						$8offcheckboxtab7.Checked=$false
						$9offcheckboxtab7.Checked=$false
						$NtpListenBox.Text = "ptbtime1.ptb.de"
						$ZeitWAListenBox.Text = "45"
					}						
function ClearTab8 	{	$1oncheckboxtab8.Checked=$false
						$2oncheckboxtab8.Checked=$false
						$3oncheckboxtab8.Checked=$false
						$ListenBox1tab8.Text = ""


}
function ClearTab9 	{	$FaxFirmaListenBox.Text = "Firma Muster AG"
						$FaxAnschriftListenBox.Text = "Musterstr. 16 - 18, 12345 Beispielshausen"
						$FaxAbteilungListenBox.Text = "Technik"
						$1oncheckboxtab9.Checked=$false
						$2oncheckboxtab9.Checked=$false
						$3oncheckboxtab9.Checked=$false
						$4oncheckboxtab9.Checked=$false
						$5oncheckboxtab9.Checked=$false
						$6oncheckboxtab9.Checked=$false
						$6offcheckboxtab9.Checked=$false
						$7oncheckboxtab9.Checked=$false
						$7offcheckboxtab9.Checked=$false
						$CopyLKListenBox.Text = "99"
						$CopyCRListenBox.Text = "99"
					}						
# Funktion Ende Clear 

# Funktionen Ende

# Start Hilfe Texte
function HilfeTab1 { 	$HelpMessagetab1 = "Client Einstellungen:

Links oben kann die Gruppe ausgwählt werden, Änderungen werden dann beim Klick auf 'OK' für die Mitglieder dieser Gruppe geschrieben.

Es können mehrere Checkboxen ausgewählt werden. Diese Funktionen werden dann der Reihe nach abgearbeitet.
Es sollte pro Funktion nur eine Checkbox ausgewählt werden. Entweder 'ein' oder 'aus'. Falls beide Checkboxen ausgewählt wurden wird zuerst die Funktion eingeschaltet und danach wieder ausgeschaltet.
Macht aber keinen Sinn. ;-)

Im Ausgabebereich werden Statusinformationen zu den einzelnen Funktionen ausgegeben.

Mit dem Button 'Ausgabe löschen' wird der Inhalt des Ausgabebereiches geleert.

Der Button 'Cancel' beendet das Programm."					
						$caption = "Hilfe Client Einstellungen:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
						
						
}
function HilfeTab2 { 	$HelpMessagetab2 = "Rufumleitungen:

Hier können die Rufumleitungen für die User der links oben ausgewählten Gruppe verändert werden. 
Auch sind mehrere Auswahlen möglich.

Rufumleitungsziele:
Hier kann das Rufumleitungsziel eingestellt werden. 
(Vorgabe ist hier die Nst. 100 als Ziel) 
Mit der Checkbox 'setzen' wird diese Funktion ausgewählt.

Zeit für Rufumleitung bei frei in Sekunden:
Stellt die Zeit in Sekunden. (Vorgabe ist hier 20 Sekunden) ein bis die Rufumleitung bei Nichtmelden aktiv wird.

Rufumleitungen:
Hier werden die Rufumleitungen aktiviert oder deaktiviert.

Mit Klick auf den Button 'OK' werden alle ausgewählten Funktionen ausgeführt und im Ausgabebereich die Statusinformationen angezeigt.

Mit dem Button 'Ausgabe löschen' wird der Inhalt des Ausgabebereiches geleert.

Der Button 'Cancel' beendet das Programm."		
					
						$caption = "Hilfe Rufumleitungen:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab2, $caption, 0, 64)
}
function HilfeTab3 { 	$HelpMessagetab1 = "IP Telefon Einstellungen:

Telefon Optionen: 
Die Lautstärke der IP Telefone steht im Default auf 0. Hier kann die Lauststärke von 0 bis 7 eingestellt werden.
3 ist eine angenehme Einstellung. Mit der Checkbox 'setzen' wird die Funktion aktiviert.

IP Telefon automatisch anmelden:
Sollte klar sein. 

Auto Firmware Update:
Mit dieser Option muss bei einem Firmwareupdate beim Booten des Telefons nicht auf 'OK' gedrückt werden, das Update wird automatisch installiert.

MAC Adresse löschen:
Achtung: Löscht wie zu vermuten bei allen Usern der links oben ausgewählten Gruppe die MAC Adresse aus der Konfiguration der $($SERVERVERSION). Danach muss das Telefon neu eingebucht werden.

PIN ändern:
Setzt die PIN der IP Telefone der ausgewählten Gruppe auf 1 mal bzw. eigene Rufnummer. auf 6 stellen mit 0 auffüllen. Nst. 12 hat dann die 12 bzw. 120000 als PIN.

PIN auslesen:
Hier können alle PIN's der IP Telefone ausgelesen und als Textdatei auf dem Desktop gespeichert werden.

Kopieren von Funktionstasten der IP Telefone:
Achtung:
Es werden auch alle Telefoneinstellungen vom Musteruser auf die Mitglieder der Konfig-Gruppe geschrieben! Dazu gehören Klingeltöne, Lautstärke, Kontrast und  TelefonTyp.
Diese Funktion sollte nur bei einer Neueinrichtung genutzt werden oder man weiß was man tut. 

Mit dem 'OK' Button werden die ausgewählten Funktionen in die Datenbank der $($SERVERVERSION) geschrieben."					
						$caption = "IP Telefon Einstellungen:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab4 { 	$HelpMessagetab1 = "Windows Features und Einstellungen:

Windows Features:
Mit diesen Funktionen können der IIS Web Server, der IIS FTP Server und der Telnet Client installiert werden.
Der FTP Dienst wird automatisch für den Firmwaredownload der IP Telefone konfiguriert. Der FTP Username lautet: 'anonymous', das Passwort ebenfalls 'anonymous'.
Diese Daten müssen noch in der $($SERVERVERSION) unter FTP Server eingetragen werden.

Mit dem Punkt Firmware Download wird bei vorhandener Internet Verbindung die aktuelle Firmware bei Swyx heruntergeladen und unter C:\inetpup\ftproot abgelegt.
Das ist der Default Ordner des IIS FTP Servers.

Windows Einstellungen:
Hier können einige Windows Einstellung vorgenommen werden. Sollte eigentlich selbsterklärend sein.
"					
						$caption = "Windows Features und Einstellungen:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab5 { 	$HelpMessagetab1 = "Systemstatus:

Beim Klick auf 'anzeigen' wird im rechten Fenster die jeweilige Information angezeigt. 
Mit dem Button 'löschen' wird der Inhalt des Fensters gelöscht um Platz für eventuell anderen Informationen zu haben."					
						$caption = "Systemstatus:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab6 { 	$HelpMessagetab1 = "Namenstasten:

Mit den einzelnen Funktionen können entweder Namenstasten von einem User auf alle User der ausgewählten Gruppe kopiert werden oder den Mitgliedern der ausgewählten Gruppe untereinander Namenstasten sortiert nach Name oder Rufnummer geschrieben werden.

Ebenfalls möglich ist es den User 1Dummy anlegen zu lassen und ihm Tasten von allen Mitgliedern der Gruppe jeder zu schreiben. Diesen User kann man dann als Musteruser unter dem Punkt 1. auswählen und somit allen Usern einer Gruppe Namenstasten für alle Mitglieder der jeder Gruppe schreiben lassen.

Achtung: Alle Namenstasten der User einer Gruppe zu löschen sollte gut überlegt sein. (Punkt 5) 
Es gibt hierzu keine weitere Nachfrage und die Tasten werden unwiederruflich gelöscht.

Falls dies unbeabsichtigt ausgewählt wurde hilft eventuell ein Restore der beim Start des Tools automatisch angelegten Datenbank.
"					
						$caption = "Namenstasten:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab7 { 	$HelpMessagetab1 = "$($SERVERVERSION) Reg Keys:

$($SERVERVERSION) spezifische Reg Keys können die aktiviert oder auch deaktiviert werden.

Der Zeitserver ist mit ptbtime1.ptb.de vorbelegt, kann aber auch individuell eingestellt werden. Es kann eine IP Adresse oder auch der FQDN (bei funktionierender DNS Auflösung) verwendet werden.

Eventuell müssen noch einige Dienste neu gestartet werden. Z.B. bei der Media Bridge. Dies wird zu Zeit noch nicht von dem Script automatisch erledigt!

Auch hier gilt: Mit dem 'OK' Button werden die gesetzten Einstellungen ohne Nachfrage direkt geschrieben."					
						$caption = "$($SERVERVERSION) Reg Keys:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab8 { 	$HelpMessagetab1 = "Backup und Restore:

Backup:
Mit den Checkboxen kann das Verzeichnis ausgewählt werden in welchem das Backup abgelegt werden soll. $($SERVERVERSION) Default ist der Ordner 'C:\ProgramData\$BACKUPPATH\Backup'.
Es kann aber auch der Ordner 'C:\Backup\Backups' ausgewäht werden. Dies ist der Default Ordner des aktuellen Backupscripts. Mit dem Klick auf den Button 'Backup' wird das Backup gestartet.

Restore:
Über den Button 'Backup auswählen' ist es möglich über den Windows Explorer eine Backup Datei (.dat) auszuwählen. Der Pfad wird dann im Feld automatisch eingetragen.
Mit dem Button 'Backup zurückspielen' wird das Restore der Datenbank gestartet. 

Achtung: Alle $($SERVERVERSION) Dienste werden dann ohne Rückfrage gestoppt und das Backup in die Datenbank zurückgespielt.
Alle $($SERVERVERSION) Diente werden anschließend automatisch wieder gestartet.  
"					
						$caption = "Backup und Restore:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}
function HilfeTab9 { 	$HelpMessagetab1 = "Kopierfunktionen, Fax Client Einstellungen und sonstiges:

Kopieren von Callrouting Scripten:
Hier kann wieder ein vorhandener User mit Callrouting Scripten ausgewählt werden. Voreingestellt ist der User mit der Rufnummer 99. Mit der Checkbox 'kopieren' wird die Funktion ausgewählt.
'OK' startet den Kopiervorgang. Es werden auch alle Einstellungen zu dem vorhanden Script mit kopiert. Die links oben ausgewählte Gruppe (Default: Konfig-Gruppe) ist auch hier das Ziel.
Achtung: Falls der ZielUser schon Callrouting Scripte hat werden diese ohne Rückfrage gelöscht.

Kopieren von Leitungstasten:

Erstellen:
Auch hier werden vom MusterUser (Voreinstellung: Nst. 99) die Leitungstasten (Anzahl, Beschriftung und Funktion) auf die Mitglieder der ausgewählten Gruppe kopiert.
Das Feld 'gehende Rufnummer' wird dabei auf die Rufnummer des ZielUsers umgeschrieben.

Löschen:
Es werden bei allen Usern der ausgewählten Gruppe sämtliche Leitungstasten gelöscht. (Macht nur Sinn wenn man im Nachgang den Usern wieder neue Leitungstasten von einem Musteruser kopiert.)

Remote Connector Client Zertifikate:
Hier können die Zertifikate für die User der ausgewähten Gruppe (Default: Konfig-Gruppe) für den RemotConnector erstellt bzw. gelöscht werden. Wird für die Verbindung zu Smartphones benötigt.

Sonstiges:
Für diese Funktionen war auf der Client Einstellungen Seite leider kein Platz mehr. Deshalb sind sie hier.
Über den 'OK' Button werden diese Funktionen bei aktiver Checkbox geschrieben.

Fax Client Einstellungen:
Hier kann die Firma, die Anschrift und die Abteilung im Fax Client für die Mitglieder der ausgewählten Gruppe eingetragen und in die Datenbank geschrieben werden.
Falls im User eine Fax Rufnummer, externe Rufnummer oder E-Mail Adresse hinterlegt ist wird diese ebenfalls übernommen.
Mit dem Button 'Schreiben' werden die eingetragenen Werte in die $($SERVERVERSION) Datenbank geschrieben.
"  
					
						$caption = "Kopierfunktionen, Fax Client Einstellungen und sonstiges:"
						[System.Windows.Forms.MessageBox]::Show($HelpMessagetab1, $caption, 0, 64)
}

# Ende Hilfe Texte

# Die letzte Zeile sorgt dafür, dass unser Fensterobjekt auf dem Bildschirm angezeigt wird. Das muss immer am Ende stehen.
$Form.Add_Shown({$Form.Activate()})
$form.ShowDialog()
